异步方法无法返回无效 - 我该如何处理?
问题描述:
我有一个电话应用程序。当屏幕显示我启动一个定时器是这样的:异步方法无法返回无效 - 我该如何处理?
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
方法,除非您创建事件或强制执行此操作以符合接口签名。
只是*不*返回无效。返回'任务'。 –
[异步/等待 - 何时返回一个任务与无效?]可能的重复(http://*.com/questions/12144077/async-await-when-to-return-a-task-vs-void) –