如何跟踪特定线程是否已完成
本文关键字:线程 是否 已完成 何跟踪 跟踪 | 更新日期: 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();
分别用于等待和通知