gpt4 book ai didi

c# - 调试 Task.WhenAny 和推送通知

转载 作者:行者123 更新时间:2023-12-03 01:48:11 25 4
gpt4 key购买 nike

我有以下代码片段来处理 Azure 通知中心推送通知:

var alert = "{\"aps\":{\"alert\":\"" + message + "\"}}";

var task = AzurePushNotifications.Instance.Hub.SendAppleNativeNotificationAsync(alert, username);

if (await Task.WhenAny(task, Task.Delay(500)) == task)
{
success = true;
}

有时,这会失败 - 我正在尝试找出原因?

使用 Task.WhenAny 运行时获取诊断信息的最佳方法是什么?

我想知道是否引发了异常,或者是否达到了超时。

最佳答案

你基本上有三种可能性:

  1. Task.WhenAny(task, Task.Delay(500)) == task 为 false。表示任务超时
  2. Task.WhenAny(task, Task.Delay(500)) == task 为 true。然后:
    • 如果t1.Status == TaskStatus.RanToCompletion,则任务运行成功
    • 否则,它要么被取消,要么出现故障。检查 task.IsFaultedtask.Exception 以查找更多信息

If it takes > 500ms, I want it to fail, but I want to know that's why it failed

在这种情况下,您唯一能知道的是通知超时。由于任务尚未完成,因此没有异常需要记录。如果您想在最终完成时检查状态,可以链接一个延续:

task.ContinueWith(t => 
{
// Log t.Exception
}, TaskContinuationOptions.OnlyOnFaulted);

关于c# - 调试 Task.WhenAny 和推送通知,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43170246/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com