为了账号安全,请及时绑定邮箱和手机立即绑定

不是很明白,为什么程序每次执行到下面这里也就完了?

不是很明白,为什么程序每次执行到下面这里也就完了?

C# C
慕容708150 2022-06-09 11:07:24
#region 线程安全UI操作代码private delegate void SetStatusDelegate(string status);private SetStatusDelegate setStatusDelegate; // 赋值在构造函数里 private void SetStatus(string status){if (InvokeRequired){Invoke(setStatusDelegate, new object[] { status });//this.BeginInvoke(new MethodInvoker(delegate { statusBar1.Text = status; }));}elsestatusBar1.Text = status;}麻烦哪位达人帮我解释逐句解释下呢。特别是Invoke(setStatusDelegate, new object[] { status });这句,我不明白,程序每次执行到这里也就完了。百思不得其解啊
查看完整描述

1 回答

?
繁星点点滴滴

TA贡献1803条经验 获得超3个赞

新的线程中,我们需要与UI进行交互,在.net中不允许我们直接这样做,在子线程中,调用到控件的话,编译器会认为是不安全的的。Windows 窗体中的控件被绑定到特定的线程,不具备线程安全性。因此,如果从另一个线程调用控件的方法,那么必须使用控件的一个 Invoke 方法来将调用封送到适当的线程。Invoke 生成同步方法调用;BeginInvoke 生成异步方法调用。注意BeginInvoke前面的对象是this,也就是主线程。他们作用是差不多的,只是同步与异步的区别。

查看完整回答
反对 回复 2022-06-14
  • 1 回答
  • 0 关注
  • 119 浏览

添加回答

举报

0/150
提交
取消
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号