C# 用匿名委托的方式简化Thread 和 Controle.Invoke的写法
来源:互联网 发布:金融大数据发展趋势 编辑:程序博客网 时间:2024/04/30 03:04
1. Thread
C# 程序中,如果要新建一个 Thread 的话,一般需要另建一个 方法,如果要传参数的话,需要的步骤比较麻烦,
参考一
Thread oThread = new Thread(new ThreadStart(threadMethod));
private void threadMethod(){
..
};
如果要向线程传递参数
public static void myStaticParamThreadMethod(Object obj) {
Console.WriteLine(obj);
}
Thread thread = new Thread(myStaticParamThreadMethod);
thread.start(obj);
当然还有其他的一些写法,可以参见参考1查看更详细的信息
但如果使用匿名类的话,则会简单些
Thread oThread = new Thread(delegate()
{
....
});
oThread.Start();
2.Control.Invoke
C#中, 调用如果多线程更新 UI的属性时,会报异常:Cross-thread operation not valid
一般的解决方法是声明一个委托,然后通过委托也调用,具体见参考2
private delegate void FlushClient();//代理
private void ThreadFunction()
{
if (textBox1.InvokeRequired)//等待异步
{
FlushClient fc = new FlushClient(ThreadFunction);
this.Invoke(fc);//通过代理调用刷新方法
return;
}
textBox1.Text = DateTime.Now.ToString();
}
这里要先声明一个委托,感觉比较麻烦,因为总要多写一些委托,而这些委托却是临时一个过渡,改成匿名委托后就不需要再去声明那些委托了
private void ThreadFunction()
{
if (textBox1.InvokeRequired)//等待异步
{
this.Invoke(new MethodInvoker(delegate()
{
ThreadFunction();
}));
return;
}
textBox1.Text = DateTime.Now.ToString();
}
代码量没有减少,但是却不必要去声明那个临时用的委托了
参考1: http://developer.51cto.com/art/200908/141590.htm
参考2: http://www.cnblogs.com/zhaotiantang/archive/2009/03/17/1414135.html
- C# 用匿名委托的方式简化Thread 和 Controle.Invoke的写法
- C# 用匿名委托的方式简化Thread 和 Controle.Invoke的写法
- 委托的简化语法,聊聊匿名方法和闭包
- 委托和匿名委托的比较
- 委托和匿名委托的比较
- .net 中 委托的解析、泛型解析、可变性解析、表达式和匿名方法基invoke的用法()
- C#委托方法匿名的4种写法
- C#委托方法匿名的四种写法
- 标准的事件和委托声明写法(C#)
- makefile的命名和写法简化
- makefile的命名和写法简化
- 汇编程序的简化写法
- 委托和匿名方法的使用
- 匿名函数和Lambda表达式的写法
- 委托的Invoke 和 BeginInvoke 与Control的Invoke和BeginInvoke
- 委托的Invoke 和 BeginInvoke 与Control的Invoke和BeginInvoke
- 匿名委托 Invoke,Predicate<T> 委托
- 委托的invoke、beginInvoke和控件的invoke、beginInvoke的区别
- 优派显示器一闪就灭解决案例
- VS2005快捷键大全
- 基础Web应用程序开发
- JS 常用验证
- 通过xml配置搞定Struts重复提交问题
- C# 用匿名委托的方式简化Thread 和 Controle.Invoke的写法
- jconsole设置
- 第一次来
- I帧、P帧和B帧的特点(转载)
- vc Ip、子网掩码、默认网关、首选DNS服务器
- Some Sincere Advice
- 跟着thinkphp官方论坛学TP 三
- dev2dev.bea.com.cn上的一些文章。
- XNA4.0中effect的使用变化以及spriteBatch begin的变化