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

预定义任务多次异步返回

预定义任务多次异步返回

C#
侃侃尔雅 2022-06-18 16:18:20
我在班级顶部定义了一个任务,如下所示:Task<string> MainTask {get;set;}然后在应用程序内部构建此任务。MainTask = new Task<string>( () => {    return Task.Run<string>( async () =>     {        await GetResult();    }).Result;});我想循环,直到任务返回数据,但是一旦任务第一次完成,我就无法再次启动它。bool gotResult = false;While(gotResult == false){  MainTask.Start();  MainTask.Wait();  if(MainTask.Result)  {    gotResult = true;  }}
查看完整描述

1 回答

?
回首忆惘然

TA贡献1847条经验 获得超11个赞

MainTask不应该是 a Task,而应该是 a Func<Task>(或者,在这种情况下,由于异步操作似乎提供了一个布尔值 a Func<Task<bool>>,因此您可以随时通过简单地调用方法来启动异步操作。


所以定义为:


Func<Task<bool>> AsyncOperation {get;set;}

将其用作:


while(!await AsyncOperation())

{

    //do nothing

}

至于分配它,您只需分配您拥有的异步方法:


AsyncOperation = GetResult;

请注意,您真的不应该Task每次都使用构造函数。不要处理未开始的任务,它只会引起混乱。也不需要用来Task.Run调用异步方法。它已经是异步的。也不需要使用 async lambda 来调用异步方法,这两件事都只是增加了开销而没有增加任何价值。


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

添加回答

举报

0/150
提交
取消
微信客服

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

帮助反馈 APP下载

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

公众号

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