asynchronous - 来自 BookSleeve Redis 客户端的缓存异步错误

标签 asynchronous redis booksleeve

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

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

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

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

最佳答案

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

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

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

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

关于asynchronous - 来自 BookSleeve Redis 客户端的缓存异步错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18181389/

相关文章:

python - 郁金香/异步IO : why not all calls be async and specify when things should be synchronous?

javascript - 进行同步 JavaScript 调用的技巧

queue - 获取Redis列表项索引

docker - 如何在Docker上与Redis一起使用redis-cli?

python - gevent + redis-py : SystemError: NULL result without error in PyObject_Call

c# - 如何在 C# (.NET 4.5) 中为 HttpClient.GetAsync(URI) 创建回调?

c# - ASP.NET 异步和等待

redis - 如何将 StackExchange.Redis ConnectionMultiplexer 与 SignalR.Redis 结合使用 (2.2)

asp.net - Redis 支持的 ASP.NET SessionState 提供程序

c# - Redis BookSleeve 套接字耗尽