gpt4 book ai didi

c# - 等待两个线程完成

转载 作者:行者123 更新时间:2023-11-30 13:11:01 24 4
gpt4 key购买 nike

如果您有一个主线程启动另外两个线程。让主线程等待其他两个线程的最干净的方法是什么?

我可以使用 bgndworker 和 sleep spinner 来检查 bgnd worker 的 IsBusy,但我认为有更好的方法。

编辑更多要求:

  • 主线程还有一些其他工作要做(例如 GUI)。
  • 两个生成的线程应该能够报告异常并返回结果值

最佳答案

使用 Thread.Join() 的快速示例;

        Thread t1 = new Thread(new ThreadStart(delegate()
{
System.Threading.Thread.Sleep(2000);
}));

Thread t2 = new Thread(new ThreadStart(delegate()
{
System.Threading.Thread.Sleep(4000);
}));

t1.Start();
t2.Start();

t1.Join();
t2.Join();

使用等待句柄编辑另外 3 个示例:

            ManualResetEvent[] waitHandles = new ManualResetEvent[]{
new ManualResetEvent(false),
new ManualResetEvent(false)
};

Thread t1 = new Thread(new ParameterizedThreadStart(delegate(object state)
{
ManualResetEvent handle = (ManualResetEvent)state;
System.Threading.Thread.Sleep(2000);
handle.Set();
}));

Thread t2 = new Thread(new ParameterizedThreadStart(delegate(object state)
{
ManualResetEvent handle = (ManualResetEvent)state;
System.Threading.Thread.Sleep(4000);
handle.Set();
}));

t1.Start(waitHandles[0]);
t2.Start(waitHandles[1]);

WaitHandle.WaitAll(waitHandles);

Console.WriteLine("Finished");

关于c# - 等待两个线程完成,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/594230/

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