异步方法无法返回无效 - 我该如何处理?

异步方法无法返回无效 - 我该如何处理?

问题描述:

我有一个电话应用程序。当屏幕显示我启动一个定时器是这样的:异步方法无法返回无效 - 我该如何处理?

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

[异步/等待 - 何时返回一个任务与无效?]可能的重复(http://*.com/questions/12144077/async-await-when-to-return-a-task-vs-void) –

只返回一个任务:

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

这是需要有当它完成了这个方法的调用者知道并采取相应的行动。

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