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

2016-02-19 12:22 6 1 收藏

今天图老师小编给大家精心推荐个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

延伸阅读
我们在写Remoting程序或者其他的一些应用程序的时候难免要和线程打交道,.Net使我们很容易就可以创建一个线程,但是它提供的创建线程和启动线程的方法没有明显的提供参数,假如我们要用线程来启动类里面一个带参数的方法该怎么办?下面就简单的介绍如何使用.NET提供的丰富的框架来实现这个功能。为了可以生动详细的介绍整个过程,我建立下面的一...
如何控制好多个线程相互之间的联系,不产生冲突和重复,这需要用到互斥对象,即:System.Threading 命名空间中的 Mutex 类。 我们可以把Mutex看作一个出租车,乘客看作线程。乘客首先等车,然后上车,最后下车。当一个乘客在车上时,其他乘客就只有等他下车以后才可以上车。而线程与Mutex对象的关系也正是如此,线程使用Mutex.WaitOne()方法等...
private void Button1_Click(object sender, System.EventArgs e) { // Catalog Name string strCatalog = "TestCatalog"; string strQuery=""; strQuery = "Select DocTitle,Filename,Size,PATH,URL from Scope() where FREETEXT('" +TextBox1.Text+ "')"; // TextBox1.Text is the word that you type in the text box to query by using In...
using System;  using System.DirectoryServices;  using System.Collections;  using System.Text.RegularExpressions;  using System.Text;  /**   * @author 吴海燕   * @email  wuhy80-usual@yahoo.com   * 2004-...
whois.aspx  % @Page Language="C#" %  % @Import Namespace="System.Net.Sockets" %  % @Import Namespace="System.Text" %  % @Import Namespace="System.IO" %  % @Import Namespace="System.Collections" %  script ...

经验教程

26

收藏

98
微博分享 QQ分享 QQ空间 手机页面 收藏网站 回到头部