code_junkie

How to display progressbar if waithandle is used

Nov 12th, 2011
49
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.41 KB | None | 0 0
  1. frmProgressBar.show();
  2. int successOrFail = PerformSynchronousActionUsingWaitHandle();
  3. frmProgressBar.close();
  4. frmMainScreen.show();
  5.  
  6. public event EventHandler<WorkCompleteArgs> WorkComplete;
  7. private void StartClick(object sender, EventArgs e)
  8. {
  9. //hook a complete event
  10. this.WorkComplete += new EventHandler(OnWorkComplete);
  11.  
  12. //do start code
  13.  
  14. //run the PerformSynchronousActionUsingWaitHandle process in a thread
  15. Thread thread = new Thread(new ThreadStart(PerformSynchronousActionUsingWaitHandle));
  16. thread.Start();
  17. }
  18. private void OnWorkComplete(object sender, EventArgs e)
  19. {
  20. //cross thread
  21. if (this.InvokeRequired)
  22. {
  23. this.BeginInvoke(new EventHandler(OnWorkComplete), new object[] { sender, e });
  24. return;
  25. }
  26.  
  27. //un hook
  28. this.WorkComplete -= new EventHandler(OnWorkComplete);
  29.  
  30. //do complete code
  31.  
  32. }
  33. private void PerformSynchronousActionUsingWaitHandle()
  34. {
  35. Thread.Sleep(1000);
  36. if (WorkComplete != null)
  37. {
  38. //use event args to return the functions result if needed.
  39. WorkComplete(this, new WorkCompleteArgs(true));
  40. }
  41. }
  42.  
  43. public class WorkCompleteArgs
  44. {
  45. public WorkState {get;private set;}
  46. public WorkCompleteArgs(bool workState)
  47. {
  48. this.WorkState = workState;
  49. }
  50. }
Add Comment
Please, Sign In to add comment