1

BookSleeve的性能非常好,因为它尽可能多地使用异步 IO。

但问题是,它可能会从异步操作中引发致命异常并使我的应用程序崩溃。

我知道关键字 await 可以提供帮助,但我不能在每次通话时都使用 await。

有没有办法在全局范围内捕获未处理的异常?

4

1 回答 1

1

您使用的是什么版本的库?BookSleeve 在内部专门观察自己的异常,以便它们不会导致任何崩溃,但是,您也可以:

  • 处理.Error事件
  • 处理TaskScheduler.UnobservedTaskException事件

严格来说,这些都不应该是必需的。后者不会阻止应用程序关闭,但同样:这无关紧要- 除非某些代码中存在错误并且它缺少一个或多个任务

但在更一般的层面上,检查您的任务发生了什么是一种很好的做法。如果您不想要await它们,可能仍然值得订阅一个ContinueWith检查异常的方法。此外,您不一定需要await;在许多情况下,connection.Wait(result)这也很好 - 尽管这确实会占用主线程更长时间(但请注意:它不会占用多路复用器)。

于 2013-08-12T07:42:28.130 回答