c# 并行任务出现卡死的情况

huangchao2011 2017-01-04 04:11:44
我想要的效果就是利用Parallel.Invoke 去执行多个任务,但是会出现卡死的情况,搞不懂啊,谁帮我讲解讲解

private void button4_Click(object sender, EventArgs e)
{
Parallel.Invoke(
SetLable1Text,
SetLable2Text
);
}

void SetLable1Text()
{
label1.Invoke(new Action(() => {
label1.Text = "正在执行...";
Thread.Sleep(TimeSpan.FromSeconds(3));
label1.Text = "执行完毕";
}));
}

void SetLable2Text()
{
label2.Invoke(new Action(() =>
{
label2.Text = "正在执行...";
Thread.Sleep(TimeSpan.FromSeconds(2));
label2.Text = "执行完毕";
}));
}
...全文
319 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
闭包客 2017-01-05
  • 打赏
  • 举报
回复
引用 6 楼 huangchao2011 的回复:
引用 5 楼 closurer 的回复:
Invoke 方法会阻塞界面线程,所以会造成程序假死,也就是不响应任何用户操作。
是一直死掉了,程序直接挂了
这个和多线程无关,看你在线程里面做什么处理。
huangchao2011 2017-01-05
  • 打赏
  • 举报
回复
引用 5 楼 closurer 的回复:
Invoke 方法会阻塞界面线程,所以会造成程序假死,也就是不响应任何用户操作。
是一直死掉了,程序直接挂了
闭包客 2017-01-04
  • 打赏
  • 举报
回复
Invoke 方法会阻塞界面线程,所以会造成程序假死,也就是不响应任何用户操作。
夏天的枫 2017-01-04
  • 打赏
  • 举报
回复
用BeginInvoke
圣殿骑士18 2017-01-04
  • 打赏
  • 举报
回复
Invoke-》BebinInvoke
huangchao2011 2017-01-04
  • 打赏
  • 举报
回复
引用 1 楼 D56233577 的回复:
别用Thread.Sleep,改用Task.Delay和异步方法。
最开始我就是用的Task.Delay 一样会假死
D56233577 2017-01-04
  • 打赏
  • 举报
回复
别用Thread.Sleep,改用Task.Delay和异步方法。

110,536

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧