c# 多线程操作Winform控件,不得不通过Delegate操作吗
c# 多线程操作Winform控件,只能通过Delegate操作吗?在Winform开发中,如果在多线程中操作某一个控件的赋值
c# 多线程操作Winform控件,只能通过Delegate操作吗?
在Winform开发中,如果在多线程中操作某一个控件的赋值的时候,我一般都是这么写:
winform 多线程
[解决办法]如果你听说过Action<>委托类型和Lambda表达式/匿名委托的话,那么,很明显,你就不需要专门定义委托方法了。
[解决办法]如果只是winform开发的话在启动线程前加上 Control.CheckForIllegalCrossThreadCalls = false;就可以了,不用定义委托。
[解决办法]Lambda表达式基本上也要这样,只是省了委托声明那步
[解决办法]control.Invoke(new SetControlTextDelegate((ct, v) => { ct.Text = v; }), new object[] { control, value });
=>
control.Invoke(new Action<Control, string>((ct, v) => { ct.Text = v; }), new object[] { control, value });
然后委托申明去掉