C#中worker线程与UI主线程通信
2013-01-21 16:09
155 查看
1. delegate(委托)
这个就类似C++中的函数指针的概念
2. Invoke
在worker线程中使用System.Windows.Forms.Control 的Invoke方法, 就可以与UI主线程进行通信
3. C#中向线程传递数据只有两种方法(<<Professional Csharp 2008的19.3.1给线程传送数据>>:
1) ParameterizedThreadStart
2)定制类
这个就类似C++中的函数指针的概念
2. Invoke
在worker线程中使用System.Windows.Forms.Control 的Invoke方法, 就可以与UI主线程进行通信
3. C#中向线程传递数据只有两种方法(<<Professional Csharp 2008的19.3.1给线程传送数据>>:
1) ParameterizedThreadStart
2)定制类
using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Linq; using System.Text; using System.Windows.Forms; using System.Net; using System.IO; using System.Threading; namespace Test { public partial class main : Form { public main() { InitializeComponent(); fun = Function; } private void button1_Click(object sender, EventArgs e) { Thread t1 = new Thread(MyThread); t1.Start(this); } private delegate void FunctionDelegate(string message); private void Function(string message) { this.textBox1.Text = message; } private FunctionDelegate fun; private void MyThread(object o) { main UI = (main)o; UI.Invoke(UI.fun,new Object[] {"KKKKKKKKKKKKK"}); } } }
相关文章推荐
- C#中RunWorkerCompleted event在哪个线程中触发
- C# Backgroundworker(后台线程)的使用
- 模板应用--UI线程与worker线程同步 模仿c# invoke
- 模板应用--UI线程与worker线程同步 模仿c# invoke
- C#学习笔记-线程
- 《C#编程之道》 之 高效使用线程
- C#用委托(Delegate)的BeginInvoke和EndInvoke方法操作线程
- C#中工作线程和多线程跨线程操作控件
- C#读写者线程(用AutoResetEvent实现同步)
- 在C#中子线程如何操作主窗口线程上的控件
- C#利用API给其它线程的各种控件赋值
- C#中利用委托实现多线程跨线程操作
- c#多窗体之间线程问题
- c#线程中使用 dataset
- C# BackgroundWorker的使用
- 改善C#程序的建议7:正确停止线程
- 黄聪:C# 使用线程你可能不知道的问题
- C#+NLua实现将Lua代码在主线程上执行
- C#线程间操作无效: 从不是创建控件" XX" 的线程访问它
- 解决c#所有单线程单元(STA)线程都应使用泵式等待基元(如 CoWaitForMultipleHandles),并在运行时间很长的操作过程中定期发送消息。 转载