gpt4 book ai didi

c# - 启动同一个线程两次 - 第一个完成后的第二次

转载 作者:太空宇宙 更新时间:2023-11-03 19:07:00 25 4
gpt4 key购买 nike

所以我创建了一个线程,它执行一个依赖于全局变量的函数。之后,我想更改该变量并再次运行线程,以便它使用另一个参数再次执行我的过程。问题是,我似乎无法弄清楚我的 Thread 何时结束。经过大量谷歌搜索后,我没有发现任何可以帮助我的东西。这里有人可以帮忙吗?提前致谢。一些代码将不胜感激。这是我的:

//temp_folder is global variable

temp_folder = APPDATA + "Local" + "\\" + "Temp\\";

Thread oThread = new Thread(new ThreadStart(clean_temp));
oThread.Start();

//Here I should wait for this oThread to finish, then change the temp_folder
//variable mentioned in comment down and start once again

//temp_folder = WINDIR + "\\" + "Temp\\";
//oThread.Start();

这是一个 clean_temp() 过程。是的,这是 GUI 应用程序。

public void clean_temp()
{
DirectoryInfo directory = new DirectoryInfo(temp_folder);

try
{
DirectoryInfo[] folders = directory.GetDirectories();

foreach (DirectoryInfo folder in folders)
{
temp_folder = temp_folder + folder.Name + "\\";
clean_temp();
temp_folder = temp_folder.Replace(folder.Name + "\\", "");
}
}
catch { }

long sz;
double size, trenutna;

foreach (FileInfo file in directory.GetFiles())
{
sz = file.Length;
size = (double)sz / 1024.0;
trenutna = Convert.ToDouble(lbl_junk_size.Text);
trenutna += size;

MethodInvoker mi_invoker_size_change = new MethodInvoker(()=> lbl_junk_size.Text = trenutna.ToString());
lbl_junk_size.Invoke(mi_invoker_size_change);

MethodInvoker mi_invoker_count_change = new MethodInvoker(() => lbl_junk.Text = (Convert.ToInt64(lbl_junk.Text) + 1).ToString());
lbl_junk.Invoke(mi_invoker_count_change);
}
}

最佳答案

您可以使用 Join()以确保您的线程已完成。

例如:

Thread oThread = new Thread(new ThreadStart(clean_temp));
oThread.Start();

oThread.Join();

关于c# - 启动同一个线程两次 - 第一个完成后的第二次,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25622749/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com