У меня есть функция вызывается из потока пользовательского интерфейса, я дважды проверить, если это так, поWPF ждут ключи от потока пользовательского интерфейса
System.Windows.Threading.Dispatcher.FromThread(System.Threading.Thread.CurrentThread)
все вызывается из метода void
, который не может быть async void
потому что он имеет параметр out
(метод от стороннего API).
Таким образом, в этом методе void
я делаю вызов к async
методе, основной метод не должен ждать, так что я просто запустить его и забыть (планирование обработки исключений в методе ContinueWith
, но я не там еще).
Проблема заключается в том, что когда в цепи методы await
выполняется на ExecuteTaskAsync
методе клиента RestSharp, после этой строки, нить Witched к МТУ, то SynchronizationContext.Current
отличается тоже.
Почему это происходит? Должно ли ключевое слово await
вернуться к оригинальному SynchronizationContext? Почему во время этого звонка меняется SynchronizationContext.Current
?
Извините за отсутствие фрагментов кода, это часть более крупного приложения, и его сложно отладить, но я делаю это прямо сейчас, поэтому будут добавлены фрагменты кода.