c# - Async/Await 方法 - 无需等待方法执行

标签 c# asynchronous async-await

我有一个用于发送通知的异步方法。但是我在调​​用方法时没有设置 await 关键字。因为不需要等待我的回复。

但是,它说,警告。 enter image description here

是需要加await关键字来解决还是忽略Warning?

最佳答案

如果您可以使用 C# 7 功能,请将其分配给“丢弃”变量:

_ = iPushNotificationService.SendPushNotification(objNotificationMessage);

如果您不能使用 C# 7 - 您可以将它分配给某个变量:

var t = iPushNotificationService.SendPushNotification(objNotificationMessage);

或者使用这样的扩展方法:

public static class TaskExtensions {
    public static void Ignore(this Task t) {

    }
}

然后:

iPushNotificationService.SendPushNotification(objNotificationMessage).Ignore();

请注意,您可能对结果不感兴趣,但如果它未能发送该通知(至少记录该通知),您可能会感兴趣。在这种情况下,您可以使用 ContinueWith:

SendNotification().ContinueWith(c =>
{
    // do something with c.Exception
}, TaskContinuationOptions.OnlyOnFaulted).Ignore();

或者将其移动到单独的异步方法中:

static async void SendNotification() { // if you hate async void - use Task
     try {
        await iPushNotificationService.SendPushNotification(objNotificationMessage);
     }
     catch (Exception ex {
         // log it
     }
}

然后调用它。

关于c# - Async/Await 方法 - 无需等待方法执行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49047012/

相关文章:

c# - 将上下文菜单左键单击事件添加到通知图标

c# - 调试与发布性能

c# - 如何为 cmd 进程设置环境变量? - 不是系统环境变量

android - 使用 AsyncTask 发送 Android 邮件

javascript - 如何从异步调用返回响应?

c# - 计算分层对象列表中所有项目的方法

ios - 将异步 block 回调转换为同步返回值

c# - 异步和等待返回类型混淆

c# - 任务 ContinueWith 不返回预期值

node.js - 需要帮助在 NodeJS 中使用 Sinon 来 stub async/await promise