首先,让我指出在ASP.NET应用程序中“解雇”几乎总是一个错误。如果您不在乎是否
DeleteFooAsync真正完成 *** 作,那么“开火即忘”只是可接受的方法。
如果您愿意接受该限制,那么我的博客上有一些代码可以在ASP.NET运行时中注册任务,并且可以接受同步和异步工作。
您可以编写一次性包装器方法来记录异常,如下所示:
private async Task LogExceptionsAsync(Func<Task> pre){ try { await pre(); } catch(Exception exception) { m_log.Error("Call failed: " + exception.ToString()); }}
然后
BackgroundTaskManager像这样从我的博客中使用:
BackgroundTaskManager.Run(() => LogExceptionsAsync(() => DeleteFooAsync()));
另外,您可以保留
TaskScheduler.UnobservedTaskException并像这样调用它:
BackgroundTaskManager.Run(() => DeleteFooAsync());
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)