- using System;
- using System.ComponentModel;
- using System.Windows.Forms;
- using System.Threading;
- namespace AutoResetEventTest
- {
- public partial class Form1 : Form
- {
- private ManualResetEvent manualResetEvent;
- private AutoResetEvent auto;
- private bool suspend;
- private AsyncOperation asyncOperation;
- public delegate void InvokeDelegate(string str);
- private InvokeDelegate invokeDelegate;
- const string str = "Test";
- private bool formClosed;
- public Form1()
- {
- InitializeComponent();
- manualResetEvent = new ManualResetEvent(false);
- auto = new AutoResetEvent(true);
- asyncOperation = AsyncOperationManager.CreateOperation(null);
- invokeDelegate = new InvokeDelegate(this.SafeInvoke);
- this.FormClosed += delegate
- {
- this.formClosed = true;
- this.auto.Close();
- };
- }
- private void btnStart_Click(object sender, EventArgs e)
- {
- this.btnStart.Enabled = false;
- this.btnSuspend.Enabled = true;
- ThreadPool.QueueUserWorkItem(delegate
- {
- SafeInvoke();
- //this.BeginInvoke(invokeDelegate, new object[] { str });
- });
- &n