繁体   English   中英

异步方法无法返回void-如何处理?

[英]async method cannot return void - How can I handle this?

我有电话申请。 当屏幕显示时,我将启动一个计时器,如下所示:

 base.OnAppearing();
 {
     timerRunning = true;
     Device.BeginInvokeOnMainThread(() => showGridTime(5));
 }
 async void showGridTime(int time)
 { 
     while (timerRunning)
     {
         var tokenSource = new CancellationTokenSource();
         await Task.Delay(time, tokenSource.Token);
         detailGrid.IsVisible = true;
     }
 }

该代码似乎可以工作,但是IDE中有一条警告消息,指出异步方法不能返回null。

有了这段代码,有人可以帮忙给我一些建议,告诉我应该返回什么,以及如果我以正确的方式进行操作吗?

只需返回一个任务:

async Task ShowGridTimeAsync(int time)
 { 
     while (timerRunning)
     {
         var tokenSource = new CancellationTokenSource();
         await Task.Delay(time, tokenSource.Token);
         detailGrid.IsVisible = true;
     }
 }

必须使此方法的调用者知道该方法何时完成并采取相应措施。

不建议创建async void方法,除非创建事件或为了满足接口签名而被迫这样做。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM