【发布时间】:2021-03-26 04:06:37
【问题描述】:
await 出于某种原因似乎没有在调用上下文中恢复。我正在调用一个async 方法(实际上是几个async 方法的层次结构)。一切都很顺利,直到我最终到达使用 RestSharp 的ExecuteAsync() 的 DataService。最后的调用如下所示:
IRestResponse Response = await rc.ExecuteAsync(request); //rc is a RestClient object
我已经对其进行了彻底的调试,并且在每个级别上,即使在调用 ExecuteAsync 之前,以下行也会返回 true:
System.Threading.Thread.CurrentThread == System.Windows.Application.Current.Dispatcher.Thread
只有在ExecuteAsync()带服务器数据返回后,上面的行才变成false,说明上面的await没有在调用线程上恢复。因此,调用此异步操作并且现在想要将返回的数据分配给 UI 的更高层会抛出臭名昭著的 STA 线程异常。
我做错了什么?我已经烧了几个小时并浏览了几篇 SO 帖子和网络文章,但这似乎不起作用。我还添加了ConfigureAwait(true) 以明确要求它在调用上下文时恢复,但它没有。
这是一个 VSTO Word 加载项。我正在将它与 WPF 一起使用。
【问题讨论】:
标签: c# wpf async-await