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
发布评论