繁体   English   中英

等待线程完成的标准方法

[英]Standard way to wait on thread completion

等待另一个线程中的进程完成的标准方法是什么?

在我的情况下,我有一个多线程服务,我想确保在服务停止时请求处理在服务退出之前完成。 我应该使用ManualResetEvent吗?

你可以保留一个List,当服务停止时,依次调用每个上面的Thread.Join。 这将等到每个人都退出。

如果你有对等待完成的线程的引用,你可以在这些引用上调用.Join()方法。 这将导致主线程等到你调用.Join()的线程完成后再继续。

或者,您可以创建一个主线程和子线程都可以访问的ManualResetEvents数组。 每个子线程都引用主线程可以访问的数组中的一个事件。 在主线程结束时在事件数组上调用WaitHandle.WaitAll(事件数组),并在每个子线程结束时调用事件上的.Set()来表示主线程子线程完成。

在主线程退出之前,下面将阻塞,直到所有子线程调用它们的事件.Set():

WaitHandle.WaitAll(事件数组);

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM