C#线程暂停与开启的代码

何时来访姑娘

何时来访姑娘

2016-02-19 12:22

今天图老师小编给大家精心推荐个C#线程暂停与开启的代码教程,一起来看看过程究竟如何进行吧!喜欢还请点个赞哦~

 

(本文来源于图老师网站,更多请访问http://m.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://m.tulaoshi.com/bianchengyuyan/)(本文来源于图老师网站,更多请访问http://m.tulaoshi.com/bianchengyuyan/)
展开更多 50%)
分享

猜你喜欢

C#线程暂停与开启的代码

编程语言 网络编程
C#线程暂停与开启的代码

C#的多线程机制探索

编程语言 网络编程
C#的多线程机制探索

s8lol主宰符文怎么配

英雄联盟 网络游戏
s8lol主宰符文怎么配

Visual C#中使用线程

编程语言 网络编程
Visual C#中使用线程

C#实现图片分割方法与代码

编程语言 网络编程
C#实现图片分割方法与代码

lol偷钱流符文搭配推荐

英雄联盟 网络游戏
lol偷钱流符文搭配推荐

C#多线程学习(一) 多线程的相关概念

编程语言 网络编程
C#多线程学习(一) 多线程的相关概念

C#多线程学习(四) 多线程的自动管理(线程池)

编程语言 网络编程
C#多线程学习(四) 多线程的自动管理(线程池)

lolAD刺客新符文搭配推荐

英雄联盟
lolAD刺客新符文搭配推荐

.Net中通用的FormatString格式符整理

.Net中通用的FormatString格式符整理

闲谈C++算法封装:穷举法

闲谈C++算法封装:穷举法
下拉加载更多内容 ↓