[英]Standard way to wait on thread completion
你可以保留一个List,当服务停止时,依次调用每个上面的Thread.Join。 这将等到每个人都退出。
如果你有对等待完成的线程的引用,你可以在这些引用上调用.Join()方法。 这将导致主线程等到你调用.Join()的线程完成后再继续。
或者,您可以创建一个主线程和子线程都可以访问的ManualResetEvents数组。 每个子线程都引用主线程可以访问的数组中的一个事件。 在主线程结束时在事件数组上调用WaitHandle.WaitAll(事件数组),并在每个子线程结束时调用事件上的.Set()来表示主线程子线程完成。
在主线程退出之前,下面将阻塞,直到所有子线程调用它们的事件.Set():
WaitHandle.WaitAll(事件数组);
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.