Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/270.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 如何获取线程执行完成事件_C#_Multithreading - Fatal编程技术网

C# 如何获取线程执行完成事件

C# 如何获取线程执行完成事件,c#,multithreading,C#,Multithreading,我正在创建一个新线程来调用其中的函数 Thread th = new Thread(My_Function); th.start(); 我想在线程执行完成后做点什么 有什么方法可以做到这一点吗?你可以用这样的东西 if(th.isAlive()) {...} 至少有两种可能的解决方案: 后台工作人员 使用执行代码,并使用事件执行完成后运行的代码 BackgroundWorker将基于事件的异步模式包装到一个非常易于使用的机制中,并完成进度报告和取消。看看这个答案 任务(.NET 4.0及以上

我正在创建一个新线程来调用其中的函数

Thread th = new Thread(My_Function);
th.start();
我想在线程执行完成后做点什么


有什么方法可以做到这一点吗?

你可以用这样的东西

if(th.isAlive())
{...}

至少有两种可能的解决方案:

后台工作人员

使用执行代码,并使用事件执行完成后运行的代码

BackgroundWorker
将基于事件的异步模式包装到一个非常易于使用的机制中,并完成进度报告和取消。看看这个答案

任务(.NET 4.0及以上版本)


使用对象,并使用该方法定义第一个任务完成后需要执行的代码。

任务链接非常好。我最终得到了类似Task.Run(()=>MessageBox.Show(“步骤0”))的东西。Wait();Task.Run(()=>MessageBox.Show(“步骤2”)).Wait();这非常有效。