请教c#多线程操作更新控件的简便方法,受不了委托了。。。
为了安全在多线程更新控件,我没有使用System.Windows.Forms.Control.CheckForIllegalCrossThreadCalls = false;
而选择了委托。但有时一个程序写下,通篇的委托代码不厌其烦。。。。。
delegate void MyThreadLB(ListBox lb, string msg);
delegate void MyThreadCB(ComboBox cb, List<string> list);
delegate void UpdateTB(TextBox tb, string msg);
......
//几乎每个控件都要弄一个委托,异常异常的麻烦!!!!!
我的程序大多数是后台线程执行查询、运算等,前台要保持响应状态
不知道有什么简洁的方案,远离不可计数的委托。
谢谢!!!!!
------解决方案--------------------谁让你定义这些委托的?
Action和Func不就可以了。
------解决方案--------------------lambda
------解决方案--------------------唉。。居然一个控件定义一个委托,为何不定义一个通用的?
------解决方案--------------------自带的泛型委托类型Action和Func;
lambda表达式;
或者定义一个通用的委托类型delegate void CallbackFuc(Control c,params object[] objs)
------解决方案--------------------公历→农历
2013年06月05日
双子座
二〇一三年四月廿七
癸巳〖蛇〗 丁巳月 壬寅日 庚戌时
------解决方案--------------------this.SafeInvoke(() =>
{
comboBox1.Enabled = true;
}
)
这个lambda就是Action()的语法糖效果,
编译后就是Action(无参版)
------解决方案--------------------Action是用来做什么的呢?
Control.BeginInvoke(new Action())不就完了?