async方法无法返回void - 我该如何处理?

时间:2016-11-29 08:24:49

标签: asynchronous xamarin xamarin.forms

我有一个电话申请表。当屏幕显示时,我启动一个这样的计时器:

 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。

鉴于此代码,有人可以提供帮助,并就我应该返回的内容给出建议,以及我是否以正确的方式解决这个问题?

1 个答案:

答案 0 :(得分:4)

只需返回一项任务:

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

必须知道此方法的调用者何时完成并采取相应的行动。

除非您创建事件或强制执行此操作以满足接口签名,否则不建议创建async void方法。