我有一个场景,当我用ThreadPool启动3..10个线程.每个线程都完成它的工作并返回ThreadPool.所有后台线程完成后,主线程中可以通知哪些选项?
目前我正在使用一种自行开发的方法,为每个创建的线程递增一个变量,并在后台线程即将完成时递减它.这很好用,但如果有更好的选择,我很好奇.
减少一个变量(在线程之间)有一点风险,除非完成Interlocked.Decrement
,但如果你有最后一个线程(即当它变为零)引发一个事件时该方法应该没问题.请注意,它必须位于"finally"块中,以避免在异常情况下丢失它(此外,您不想终止该进程).
在"Parallel Extensions"(或使用.NET 4.0)中,您可能还会查看Parallel.ForEach
此处的选项...这可能是将所有内容作为块完成的另一种方法.无需手动观看.