简单对比C#程序中的单线程与多线程设计

2019-12-30 12:17:07王冬梅

  
多线程、并发任务:  


using System; 
using System.Collections.Generic; 
using System.ComponentModel; 
using System.Data; 
using System.Drawing; 
using System.Linq; 
using System.Text; 
using System.Windows.Forms; 
using System.Threading; 
 
namespace Stockes 
{ 
  public partial class DeletgateThread : Form 
  { 
    public DeletgateThread() 
    { 
      InitializeComponent(); 
      CheckForIllegalCrossThreadCalls = false;//允许跨线程调用 
    } 
    public delegate void writeTxt(char chr);//定义委托 
    public writeTxt writetxt;//声明委托 
    public void write(string str, writeTxt writes)//使用委托 
    { 
      for (int i = 0; i < str.Length; i++) 
      { 
        writes(str[i]); 
        DateTime now = DateTime.Now; 
        while (now.AddSeconds(1) > DateTime.Now) { } 
      } 
    } 
    private void text1(char chr) 
    { 
      textBox1.AppendText(chr.ToString()); 
    } 
    public void text2(char chr) 
    { 
      textBox2.AppendText(chr.ToString()); 
    } 
    private void stratWrite() 
    { 
      if (checkBox1.Checked) 
      { 
        textBox1.Clear(); 
        textBox1.Refresh(); 
        groupBox4.Text = "正在运行。。"; 
        groupBox2.Refresh(); 
        writetxt = new writeTxt(text1); 
        write(textBox3.Text.Trim(),writetxt); 
      } 
    } 
    private void stratwrite1() 
    { 
      if (checkBox2.Checked) 
      { 
        textBox2.Clear(); 
        textBox2.Refresh(); 
        groupBox5.Text = "正在运行。。"; 
        groupBox3.Refresh(); 
        writetxt = new writeTxt(text2); 
        write(textBox3.Text.Trim(), writetxt); 
      } 
    } 
    private void button1_Click(object sender, EventArgs e) 
    { 
      Thread tr = new Thread(new ThreadStart(stratWrite));//创建线程 
      tr.Start();//启动线程 
      Thread tr1 = new Thread(new ThreadStart(stratwrite1));//创建第二个线程 
      tr1.Start();//启动线程 
    } 
     
  } 
} 


注:相关教程知识阅读请移步到c#教程频道。