C#多线程与UI响应 跨线程更新UI

 我来答
司马刀剑
高粉答主

2018-06-07 · 每个回答都超有意思的
知道顶级答主
回答量:4.6万
采纳率:93%
帮助的人:7151万
展开全部
lblStatus.Text = "执行中,请稍候……"; Func<int> longTask = new Func<int>(delegate(){ // 模拟长时间任务 Thread.Sleep(2000); // 返回任务结果:5 return 5;});// 发起一次异步调用,实际上就是在.net线程池中执行longTask// 这时由于是其它线程在工作,UI线程未被阻塞,所以窗体不会假死longTask.BeginInvoke(ar =>{ // 使用EndInvoke获取到任务结果(5) int result = longTask.EndInvoke(ar); // 使用Control.Invoke方法将5显示到一个label上,如果没有Invoke, // 直接写lblStatus.Text="5",将会抛出跨线程访问UI控件的异常 Invoke(new Action(() => lblStatus.Text = "执行结果是:" + result));}, null);
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式