Я использую функцию SSE ServiceStack в WPF в качестве механизма чата. Я зарегистрировал метод OnMessage, и в нем я создаю представление сообщения чата после получения соответствующего сообщения от сервера. Я получаю исключение «Вызывающий поток должен быть STA, потому что многие компоненты пользовательского интерфейса требуют этого», что сразу заставило меня предположить, что вызывающий поток не был моим основным потоком, и быстрая отладка показала именно это. Похоже, SSE создает свой собственный поток, и этот поток ApartmentState не установлен в STA. Что я могу сделать, чтобы смягчить эту проблему?
Использует ли Application.Current.Dispatcher.Invoke
хороший и чистый метод для создания моих представлений в этом случае?
Я также рассмотрел возможность создания нового потока STA каждый раз, когда вызывается мой зарегистрированный метод OnMessage
, но это будет означать создание новой темы в каждом сообщении чата.