如何跟踪特定线程是否已完成

时间:2011-08-01 15:14:21

标签: c# multithreading

我正在使用MultiThread应用程序。

    ThreadStart thSA = new ThreadStart(saBroker.SearchContract);
                    DTThread threadSA = new DTThread(thSA, WaitForSA);
                    brokerThreads.Add(threadSA);

 ThreadStart thSA1 = new ThreadStart(saBroker1.SearchContract);
                    DTThread threadSA1 = new DTThread(thSA1, WaitForSA1);
                    brokerThreads.Add(threadSA1);
           brokerThreads.StartAll();

现在我有一个场景,我必须在 threadSA1 完成后执行特定任务。 那么,我如何跟踪特定的线程完成。

请帮助......

3 个答案:

答案 0 :(得分:2)

什么是DTThread课程?如果这是继承自Thread的类,则可以使用Join()方法等待它:

ThreadStart thSA = new ThreadStart(saBroker.SearchContract);
                    DTThread threadSA = new DTThread(thSA, WaitForSA);
                    brokerThreads.Add(threadSA);

ThreadStart thSA1 = new ThreadStart(saBroker1.SearchContract);
                    DTThread threadSA1 = new DTThread(thSA1, WaitForSA1);
                    brokerThreads.Add(threadSA1);
           brokerThreads.StartAll();
threadSA1.Join();

答案 1 :(得分:1)

  

现在我有一个场景,我必须在之后执行特定的任务   threadSA1完成了。那么,我如何跟踪特定的线程   完整。

如何使用委托回调?

http://msdn.microsoft.com/en-us/library/system.asynccallback(v=VS.100).aspx

答案 2 :(得分:0)

您可以使用等待和通知策略在线程之间执行同步,以便使用阻塞指令暂停主线程,然后在 threadSA1 完成之前,它会唤醒被阻塞的线程。

请查看本文以获取更多信息,我认为这些信息对您有所帮助: http://www.csharphelp.com/2006/12/thread-and-sync-in-c/

在作者使用的文章中:

     mre.WaitOne();

    mre.Set();

分别等待和通知