Halcom 发表于 2018-2-13 19:40:58

C#多线程使用

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;

namespace WindowsFormsApplication1
{
    public partial class Form1 : Form
    {
      int j = 0;
      public Form1()
      {
            InitializeComponent();
      }

      private void button1_Click(object sender, EventArgs e)
      {
            BackgroundWorker mWorker = new BackgroundWorker();
            mWorker.WorkerSupportsCancellation = true;
            // SumX要执行main函数
            mWorker.DoWork += new DoWorkEventHandler(SumX);
            // xxx是一个被调函数,可用于最后结果的输出以及显示
            mWorker.RunWorkerCompleted += new RunWorkerCompletedEventHandler(xxx);
            mWorker.RunWorkerAsync();
      }

      private void SumX(object sender, EventArgs e)
      {
            for (int i = 0; i < 1000; i++)
            {
                j=j+i;
            }
      }
      private void xxx(object sender, EventArgs e)
      {
            // 全局变量j
            this.textBox1.Text = j.ToString();
      }

    }
}
通过mWorker.DoWork += new DoWorkEventHandler(SumX);使得C#窗体界面不会卡顿,即将主进程变为附加进程进行使用。
j是个全局变量;winform界面显示0-999的累加和;
百度网盘代码分享:https://pan.baidu.com/s/1nw16BGH


页: [1]
查看完整版本: C#多线程使用