2024年3月23日发(作者:)

C# 多线程控制控件实例

using System;

using c;

using entModel;

using ;

using g;

using ;

using ;

using ing;

namespace treadTest

{

//定义委托

public delegate void ListBoxDelegate();

public partial class Form1 : Form

{

public Form1()

{

InitializeComponent();

}

//委托处理方法(关联与ListBoxDelegate)

private void ListBox()

{

if (!Required)//如果在UI主线程操作ListBox,

{

(++);//则直接进行控件操作,“与UI

主线程相关联”

edItem = [ - 1];

}

else//如果是在另一线程操作ListBox,则启用委托

(new ListBoxDelegate(listShow));

}

//定义对UI主线程控件的操作,“与AddAuto相关联”。

private void listShow()

{

();

edItem = [ - 1];

}

//定义线程函数

private void AddAuto()

{

while ( == 0)

{

++;

(1000);

ListBox();//不能直接控制UI上的控件,所以用该方法选择使用委托

}

}

//在click事件中启动多线程

private void btnStart_Click(object sender, EventArgs e)

{

//线程标志置0,表示开启线程

= 0;

//定义 ThreadStart的委托类型的参数,并使该委托指向线程函数

ListBoxDelegate mycn = new ListBoxDelegate(AddAuto);

//实例化线程

Thread insertTxt = new Thread(new ThreadStart(mycn));

//启动线程

();

}

private void btnAbort_Click(object sender, EventArgs e)

{

= 1;

}

private void btnCtrlMain_Click(object sender, EventArgs e)

{

ListBox();

}

private void btnReset_Click(object sender, EventArgs e)

{

= 0;

}

private void btnClear_Click(object sender, EventArgs e)

{

();

}

private void btnQuit_Click(object sender, EventArgs e)

{

();

}

}

//全局变量解决方案

public class CommonData