虚方法Async怎么用?

蜗牛慢慢趴 2020-08-21 04:36:50
Type A有个虚方法WaitDone
      
public async virtual Task WaitDone()
{
var task = Task.Run(() => {
Thread.Sleep(1000);
});
await task;
}


Type B继承Type A 重写方法WaitDone

public override async Task WaitDone()
{
var task = Task.Run(() => {
Thread.Sleep(100);
});
await task;
}



工厂模式实例化一个对象axis,调用WaitDone,咋一直报错?加await也不对,不加await也不对





咋办


...全文
3043 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
qq_45841743 2020-08-24
  • 打赏
  • 举报
回复
第一段代码的意思,是异步等待结果,按你上面的写法就是,100ms后有结果回来,代码会在这里“阻塞”到100ms后,当然我这里用了“阻塞”这词,只是让你理解含义(别跟某些人那样整天咬文嚼字的,来一句异步代码就是不阻塞的,我们说此阻塞非彼阻塞),在本代码"阻塞"的同时,你的程序可以同时执行别的 这里与同步的区别是------同步代码“阻塞”时,你的程序不会同时执行别的,他就在呆在那里发呆 第2段代码的意思,他不会“阻塞”在那里等待结果,他会继续往下运行,所以他给你了一个提示,告诉你他不会等待结果,他会继续执行这一句话下面的代码
蜗牛慢慢趴 2020-08-22
  • 打赏
  • 举报
回复
谢谢楼上,是调用方法本身没写async,搞忘记了
wanghui0380 2020-08-21
  • 打赏
  • 举报
回复
第一段代码的意思,是异步等待结果,按你上面的写法就是,100ms后有结果回来,代码会在这里“阻塞”到100ms后,当然我这里用了“阻塞”这词,只是让你理解含义(别跟某些人那样整天咬文嚼字的,来一句异步代码就是不阻塞的,我们说此阻塞非彼阻塞),在本代码"阻塞"的同时,你的程序可以同时执行别的 这里与同步的区别是------同步代码“阻塞”时,你的程序不会同时执行别的,他就在呆在那里发呆 第2段代码的意思,他不会“阻塞”在那里等待结果,他会继续往下运行,所以他给你了一个提示,告诉你他不会等待结果,他会继续执行这一句话下面的代码
wanghui0380 2020-08-21
  • 打赏
  • 举报
回复
至于你说不加await,代码又没标红,哪有错 只是提示你,不加await,系统不会异步等待结果
wanghui0380 2020-08-21
  • 打赏
  • 举报
回复
async xxxxxx { await axis.waitone() } 本方法需要加async

110,566

社区成员

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

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

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