I have the following code:
public async Task SendPushNotificationAsync(string username, string message)
{
var task = ApnsNotifications.Instance.Hub.SendAppleNativeNotificationAsync(alert, username);
if (await Task.WhenAny(task, Task.Delay(500)) == task) {
return true;
}
return false;
}
我注意到
SendAppleNativeNotificationAsync
一直挂起(从未返回包含方法),所以我尝试在500毫秒后告诉它取消。但是...现在调用WhenAny
也会挂起,我从未看到return
被触发,导致消费者无限期等待(这是一个同步方法调用异步方法,所以我调用.Wait()):_commService.SendPushNotificationAsync(user.Username, notificationDto.PushContent).Wait(TimeSpan.FromSeconds(1));
如何在一定时间内强制结束这个任务,无论发生什么?
如果我只是“点火并忘记”,而不是等待任务完成,会发生什么?