C#跨线程操作控件.docVIP

  • 2
  • 0
  • 约4.36千字
  • 约 4页
  • 2023-12-02 发布于重庆
  • 举报
C#跨线程操作控件 C#跨线程操作控件 全文共1页,当前为第1页。在C#中,经常用到这样一个场景,Windows Form程序启动一个工作者线程执行一部分工作,这样做是为了避免速度慢的工作如果直接调用会使得主Form停止响应一段时间。 既然启动了线程,就避免不了线程之间数据传递的事情,相信你有很多种办法能解决,总之注意同步和互斥操作就好。我想说的是,工作线程处理中可能想操作某个主线程的Windows Form的Control,比如按钮,ListView等等更新工作状态之类,直接控制是不行的,不能够跨线程操作另一个线程创建的Windows Form控件。要使用委托去调用。 01.using System; 02.using System.Collections.Generic; 03.using System.ComponentModel; 04.using System.Data; 05.using System.Drawing; 06.using System.Text; 07.using System.Windows.Forms; 08.using System.Threading; 09.? 10.namespace JPGCompact 11.{ 12.??? public partial class MainForm : Form 13.??? { 14.??????? // 定义委托 15.??????? private delegate void DelegateWriteResult(string file, bool result); 16.? 17.??????? // 与定义的委托签名相同的函数,操作主线程控件 18.??????? private void WriteResult(string fileName, bool result) 19.??????? { 20.??????????? if (result) 21.??????????? { 22.??????????????? ListViewItem thisListItem = new ListViewItem(); 23.??????????????? thisListItem.ForeColor = Color.White; 24.??????????????? thisListItem.BackColor = Color.DarkGreen; 25.??????????????? thisListItem.SubItems[0].Text = fileName; 26.??????????????? thisListItem.SubItems.Add(成功); 27.??????????????? lvResultList.Items.Add(thisListItem); 28.??????????? } 29.??????????? else 30.??????????? { 31.??????????????? ListViewItem thisListItem = new ListViewItem(); 32.??????????????? thisListItem.ForeColor = Color.White; 33.??????????????? thisListItem.BackColor = Color.Red; 34.??????????????? thisListItem.SubItems[0].Text = fileName; 35.??????????????? thisListItem.SubItems.Add(失败); 36.??????????????? lvResultList.Items.Add(thisListItem); 37.??????????? } 38.??????? } 39.? 40.??????? // 启动线程 41.??????? private void btnStart_Click(object sender, EventArgs e) 42.??????? { 43.??????????? Thread workThread = new Thread(new ThreadStart(CompressAll)); 44.??????????? // 设置为背景线程,主线程一旦推出,该线程也不等待而立即结束 45.??????????? workThread.IsBackground = true; 46.??????????? workThread.Start(); 47.??????? } 48.? 49.??????? // 线程执行函数 50.???????

文档评论(0)

1亿VIP精品文档

相关文档