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

标签 c# .net

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

相关文章:

c# - 如何发出静态外部方法?

c# - 使用 awesomium 从 c# 调用 Javascript

c# - 类的前缀/后缀

c# - 在 Winform 中打开 Crystal 报表

c# - 如何在 Observable Collection 中搜索项目并获取其索引

java - 编程决定 java 或 .Net,db 或无 db

c# - 如何用连续值初始化列表<type>?

c# - 在 C# 中将小数舍入到最接近的四分之一

c# - 使用 RhinoMocks,如何在没有空构造函数的情况下模拟或 stub 具体类?

c# - WCF 服务启用跟踪