BookSleeve性能非常好,因为它尽可能多地使用异步 IO。
但问题是,它可能会从异步操作中抛出致命异常并使我的应用程序崩溃。
我知道关键字 await 可以提供帮助,但我不能在每次调用时都使用 await。
有没有办法在全局范围内捕获未处理的异常?
最佳答案
您使用的是什么版本的库? BookSleeve 在内部专门观察自己的异常,因此它们不应该导致任何崩溃,但是,您也可以:
- 处理
.Error
事件 - 处理
TaskScheduler.UnobservedTaskException
事件
严格来说,这些都不是必需的。后者会阻止应用程序关闭,但同样:这应该无关紧要 - 除非某些代码中存在错误并且它缺少一个或多个任务
但在更一般的层面上,检查您的任务发生了什么是一种很好的做法。如果您不想 await
它们,订阅一个检查异常的 ContinueWith
可能仍然值得。此外,您不一定需要 await
;在许多情况下,connection.Wait(result)
也很好 - 尽管这确实会占用主线程 一点 更长的时间(但请注意:它不会占用多路复用器)。
关于asynchronous - 来自 BookSleeve Redis 客户端的缓存异步错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18181389/