首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > .NET > C# >

请问c#多线程操作更新控件的简便方法,受不了委托了。

2013-06-26 
请教c#多线程操作更新控件的简便方法,受不了委托了。。。为了安全在多线程更新控件,我没有使用System.Windows

请教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())不就完了?

热点排行