我有一个电话申请表。当屏幕显示时,我启动一个这样的计时器:
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。
鉴于此代码,有人可以提供帮助,并就我应该返回的内容给出建议,以及我是否以正确的方式解决这个问题?
答案 0 :(得分:4)
只需返回一项任务:
async Task ShowGridTimeAsync(int time)
{
while (timerRunning)
{
var tokenSource = new CancellationTokenSource();
await Task.Delay(time, tokenSource.Token);
detailGrid.IsVisible = true;
}
}
必须知道此方法的调用者何时完成并采取相应的行动。
除非您创建事件或强制执行此操作以满足接口签名,否则不建议创建async void
方法。