BackgroundWorker 不能在子线程调用

.Net技术 码拜 9年前 (2016-02-22) 932次浏览
MSDN坑本人BackgroundWorker 不能在子线程调用
只好用传统的这种方法调用

  private delegate void setTextDelegate(string s);
        private void setText(string s) {
            if (_window.label_connpollNum.InvokeRequired) {
                setTextDelegate sd = new setTextDelegate(setText);
                _window.label_connpollNum.Invoke(sd, s);
            }else {
                _window.label_connpollNum.Text = s;
            }
        }

https://msdn.microsoft.com/zh-cn/library/ms171728(v=vs.110).aspx

解决方案

20

BackgroundWorker相当于使用了封装后的thread,
所以假如用BackgroundWorker没必要再起子线程;
假如本人可以起线程,使用委托与UI进行交互即可,
也就不需要BackgroundWorker

20

其实BackgroundWorker就是新开一个线程,
跨线程调用控件需要使用委托的

CodeBye 版权所有丨如未注明 , 均为原创丨本网站采用BY-NC-SA协议进行授权 , 转载请注明BackgroundWorker 不能在子线程调用
喜欢 (0)
[1034331897@qq.com]
分享 (0)