task,不好用啊

货郎大叔 2020-03-22 09:48:05

private void Button_Click(object sender, RoutedEventArgs e)
{
Task<string> task = Task.Run<string>(() => DoSomeThing());
MessageBox.Show("主线程继续执行");
MessageBox.Show(task.IsCompleted.ToString());
string s2 = task.Result;
}
private string DoSomeThing()
{
Thread.Sleep(5000); //模拟耗时计算
string s = "我好想";
return s;
}

上面的代码,Task不是所谓一个异步任务吗?异步执行DoSomeThing方法获取一个字符串,赋值给s2,可是为什么界面还是阻塞等待啊,呈现卡死状,这与不要Task没什么区别啊
...全文
154 1 打赏 收藏 转发到动态 举报
写回复
用AI写文章
1 条回复
切换为时间正序
请发表友善的回复…
发表回复
枫雁 2020-03-22
  • 打赏
  • 举报
回复
方法要加 aysnc 关键词

private async void Button_Click(object sender, RoutedEventArgs e)
{
Task<string> task = Task.Run<string>(() => DoSomeThing());
MessageBox.Show("主线程继续执行");
MessageBox.Show(task.IsCompleted.ToString());
string s2= await task;
}

110,539

社区成员

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

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

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