gpt4 book ai didi

c# - 如何检查线程执行是否完成

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

我正在执行一个线程,该线程使用 C# win 应用程序在命令提示符下调用 BCP。如果线程执行完成,我想做一些 Action ,即 BCP out 完成。BCP out是在本地机器上进行的。我应该如何检查线程执行是否完成???我的代码看起来像

using(this.proc = new Process())
{
var procStartInfo =
new ProcessStartInfo(cmdFileName)
{
UseShellExecute = false,
RedirectStandardOutput = true,
RedirectStandardError = true,
WindowStyle = ProcessWindowStyle.Hidden,
CreateNoWindow = true
};

this.proc.StartInfo = procStartInfo;
if(this.proc.Start())
{
var thread1 = new Thread(this.GetError) { IsBackground = true };
var thread2 = new Thread(this.GetOutput) { IsBackground = true };
thread1.Start();
thread2.Start();

// check if thread execution is completed then do some logic
}
}

最佳答案

一个标准的技巧是:

thread1.Join();
thread2.Join();

//can only get here once both threads are finished.

更新

好吧,你真的想检查进程是否已经退出?

然后你有HasExited System.Diagnostics.Process 的属性。

这里有一个有点脏的方法:

while(!proc.HasExited){
Thread.Sleep(1000); //wait a second
}

关于c# - 如何检查线程执行是否完成,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7723665/

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