code_junkie

be notified when all background threadpool threads are finished

Nov 12th, 2011
73
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 0.77 KB | None | 0 0
  1. List<WaitHandle> events = new List<WaitHandle>();
  2. for (int i = 0; i < 64; i++)
  3. {
  4. ManualResetEvent mre = new ManualResetEvent(false);
  5. ThreadPool.QueueUserWorkItem(
  6. delegate(object o)
  7. {
  8. Thread.Sleep(TimeSpan.FromMinutes(1));
  9. ((ManualResetEvent)o).Set();
  10. },mre);
  11. events.Add(mre);
  12. }
  13. WaitHandle.WaitAll(events.ToArray());
  14.  
  15. int length = 10;
  16. ManualResetEvent[] waits = new ManualResetEvent[length];
  17. for ( int i = 0; i < length; i++ ) {
  18. waits[i] = new ManualResetEvent( false );
  19. ThreadPool.QueueUserWorkItem( (obj) => {
  20. try {
  21.  
  22. } finally {
  23. waits[i].Set();
  24. }
  25. } );
  26. }
  27.  
  28. for ( int i = 0; i < length; i++ ) {
  29. if ( !waits[i].WaitOne() )
  30. break;
  31. }
Add Comment
Please, Sign In to add comment