C#如何借助多线程
发布时间:2021-11-24 13:19:58 所属栏目:教程 来源:互联网
导读:本人最近需要操作多线程,但是在C#中有一个问题,线程中操作主线程中的控件就会提示错误,或者操作有问题,为此可以使用委托代理的方法,以下是本人借鉴网上的内容自己编写的例子:(在解说之后附带程序代码) 上图为软件控件界面,ListView控件中在Columns
|
本人最近需要操作多线程,但是在C#中有一个问题,线程中操作主线程中的控件就会提示错误,或者操作有问题,为此可以使用委托代理的方法,以下是本人借鉴网上的内容自己编写的例子:(在解说之后附带程序代码) 上图为软件控件界面,ListView控件中在Columns可以添加列信息,但是为了得到上面的效果,需要将ListView控件中的View属相设置成Details。 使用多线程需要引用System.Threading。 此外,为了在不同的方法之间传递数据信息,可以设置全局变量: public Thread thread = null; public int iNo = 0; public string strNo = null; 楼主发现,如果项目中包含多个界面,在界面之间传递数据的最好办法是添加类,在类中申请变量,本项目添加一个类CCValue,并在CCValue中定义变量 public static bool thStop = false;//申请bool型变量控制线程启停 开启按钮代码: private void button1_Click(object sender, EventArgs e) { thread = new Thread(new ThreadStart(Dowork)); thread.Start(); } 退出按钮代码:(本按钮只是退出线程,并不是退出窗口) private void button3_Click(object sender, EventArgs e) { CCValue.thStop = true; thread.Join(1); } Hello按钮代码:(本按钮主要是为了测试是否真正的实现了多线程) private void button2_Click(object sender, EventArgs e) { MessageBox.Show("Hello"); } 多线程操作代码: public delegate void MyInvoke(string str1, string str2); public void Dowork() { while (!CCValue.thStop) { if (CCValue.thStop) { break; } else { strNo = iNo.ToString().Trim(); MyInvoke mi = new MyInvoke(UpdateForm); this.BeginInvoke(mi, new object[] { "我是文本框", strNo });//注意此处的new object[] { "我是文本框", strNo }与下面的 //UpdateForm(string param1,string param2)是变量对应的, //也即是向方法UpdateForm(string param1,string param2) //传送数据 Thread.Sleep(1000); iNo++; } } } public void UpdateForm(string param1,string param2) { this.textBox1.Text = param1 + param2; ListViewItem item = new ListViewItem(param1); item.SubItems.Add(param2); listView1.Items.Add(item); } 以上操作结束以后大家一下就会已经实现了多线程。 ![]() (编辑:文章分享网_茂名站长网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |


