C# 多线程控制控件实例
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Text;
using System.Windows.Forms;
using System.Threading;
namespace treadTest
{
//定义委托
public delegate void ListBoxDelegate();
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}
//委托处理方法(关联与 ListBoxDelegate)
private void ListBox()
{
if (!listBox1.InvokeRequired)//如果在 UI 主线程操作 ListBox,
{
listBox1.Items.Add(++CommonData.num);//则直接进行控件操作,“与 UI 主线程相
关联”
listBox1.SelectedItem = listBox1.Items[listBox1.Items.Count - 1];
}
else//如果是在另一线程操作 ListBox,则启用委托
listBox1.Invoke(new ListBoxDelegate(listShow));
}
//定义对 UI 主线程控件的操作,“与 AddAuto 相关联”。
private void listShow()
{
listBox1.Items.Add(CommonData.num);
listBox1.SelectedItem = listBox1.Items[listBox1.Items.Count - 1];
}
//定义线程函数
private void AddAuto()
{
while (CommonData.Flag == 0)