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

本文关键字:线程 是否 已完成 何跟踪 跟踪 | 更新日期: 2023-09-27 18:04:14

我正在使用多线程应用程序。

    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完成后执行特定的任务。那么,我如何跟踪特定的线程完成。

请帮…

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

什么是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();

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

如何使用委托回调?

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

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

看看这篇文章,我想它会对你有所帮助:http://www.csharphelp.com/2006/12/thread-and-sync-in-c/

在文章中作者使用了:

     mre.WaitOne();

    mre.Set();

分别用于等待和通知