今天图老师小编给大家精心推荐个C#线程暂停与开启的代码教程,一起来看看过程究竟如何进行吧!喜欢还请点个赞哦~
【 tulaoshi.com - 编程语言 】
(本文来源于图老师网站,更多请访问http://www.tulaoshi.com/bianchengyuyan/)
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 }); }); } private void btnSuspend_Click(object sender, EventArgs e) { this.btnSuspend.Enabled = false; this.btnResume.Enabled = true; this.suspend = true; manualResetEvent.Reset(); } private void SafeInvoke(string s) { while (true) { if (formClosed) return; Thread.Sleep(200); if (suspend) this.auto.WaitOne(); this.txtMessageBox.AppendText(s); } } private void SafeInvoke() { while (true) { if (formClosed) return; Thread.Sleep(200); if (suspend) //this.auto.WaitOne(); manualResetEvent.WaitOne(); asyncOperation.Post(delegate { this.txtMessageBox.AppendText(str); }, str); } } private void btnResume_Click(object sender, EventArgs e) { this.btnResume.Enabled = false; this.btnSuspend.Enabled = true; this.suspend = false; //this.auto.Set(); manualResetEvent.Set(); } } }
(本文来源于图老师网站,更多请访问http://www.tulaoshi.com/bianchengyuyan/)(本文来源于图老师网站,更多请访问http://www.tulaoshi.com/bianchengyuyan/)
来源:http://www.tulaoshi.com/n/20160219/1600737.html
看过《C#线程暂停与开启的代码》的人还看了以下文章 更多>>