Я занимаюсь разработкой приложения, которое разделено на несколько сборок .NET (один основной исполняемый файл и набор библиотек классов). В настоящее время я использую графический интерфейс WPF, но мне необходимо сохранить гибкость, чтобы в будущем переключиться на другую среду графического интерфейса.
Вот моя проблема: одна из библиотек классов выполняет некоторую работу в отдельном потоке и вызывает событие, когда этот поток завершается. Я быстро обнаружил, что мой WPF GUI расстроился, когда я попытался изменить его компоненты из этого обработчика событий, поэтому я реализовал «очередь событий», которая отправляет события в основной поток, используя System.Windows.Threading.DispatcherTimer. Это сделало работу; однако я с ужасом обнаружил, что этот DispatcherTimer работает только в контексте приложения WPF!
Я пытаюсь скрыть все уродливые детали многопоточности в этой библиотеке классов, которая может в конечном итоге использоваться вместе с графическим интерфейсом не-WPF. Идея состоит в том, что приложение-потребитель должно иметь возможность обновлять свой графический интерфейс из обработчиков событий. Итак, мой вопрос, есть ли стандартный метод (независимо от какой-либо конкретной структуры GUI) для вызова событий в другом потоке ??
Любая помощь будет оценена. Спасибо.