Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- frmProgressBar.show();
- int successOrFail = PerformSynchronousActionUsingWaitHandle();
- frmProgressBar.close();
- frmMainScreen.show();
- public event EventHandler<WorkCompleteArgs> WorkComplete;
- private void StartClick(object sender, EventArgs e)
- {
- //hook a complete event
- this.WorkComplete += new EventHandler(OnWorkComplete);
- //do start code
- //run the PerformSynchronousActionUsingWaitHandle process in a thread
- Thread thread = new Thread(new ThreadStart(PerformSynchronousActionUsingWaitHandle));
- thread.Start();
- }
- private void OnWorkComplete(object sender, EventArgs e)
- {
- //cross thread
- if (this.InvokeRequired)
- {
- this.BeginInvoke(new EventHandler(OnWorkComplete), new object[] { sender, e });
- return;
- }
- //un hook
- this.WorkComplete -= new EventHandler(OnWorkComplete);
- //do complete code
- }
- private void PerformSynchronousActionUsingWaitHandle()
- {
- Thread.Sleep(1000);
- if (WorkComplete != null)
- {
- //use event args to return the functions result if needed.
- WorkComplete(this, new WorkCompleteArgs(true));
- }
- }
- public class WorkCompleteArgs
- {
- public WorkState {get;private set;}
- public WorkCompleteArgs(bool workState)
- {
- this.WorkState = workState;
- }
- }
Add Comment
Please, Sign In to add comment