我正在执行一个线程,该线程使用 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/