我有一个c#控制台应用程序,可以创建多达5个线程。
线程执行得很好,但UI线程在完成其工作时关闭。
有没有办法让主UI线程保持运行,只要辅助线程在运行?
foreach (var url in urls)
{
Console.WriteLine("starting thread: " + url);
ThreadPool.QueueUserWorkItem(new System.Threading.WaitCallback(myMethod), url);
}我按照上面的代码开始我的线程。
发布于 2011-10-14 03:01:28
ThreadPool中的线程是后台线程,这意味着正在退出的应用程序不会等待它们完成。
您有几个选项:
例如,
Parallel.ForEach(urls, url => MyMethod(url));发布于 2011-10-14 02:57:26
如果您使用的是.NET 4.0:
var tasks = new List<Task>();
foreach(var url in urls)
{
tasks.Add(Task.Factory.StartNew(myMethod, url));
}
// do other stuff...
// On shutdown, give yourself X number of seconds to wait for them to complete...
Task.WaitAll(tasks.ToArray(), TimeSpan.FromSeconds(30));发布于 2011-10-14 02:57:56
啊- ThreadPool是背景。它是排队的,但是然后你的程序结束了。完成了。程序终止。
读取信号量(WaitSignal)并等待-当所有线程都发出信号表示主线程可以继续时,回调中的线程在结束信号时结束。
https://stackoverflow.com/questions/7759001
复制相似问题