Я разрабатываю библиотеку классов в .NET, которую в конечном итоге будут использовать другие разработчики. В этой библиотеке используются несколько рабочих потоков, а эти потоки сообщают о событиях, которые заставят некоторые элементы управления пользовательским интерфейсом обновляться в приложении WinForms/WPF.
Обычно для каждого обновления вам нужно проверить свойство .InvokeRequired на WinForms или эквивалентное свойство WPF и вызвать это в основном потоке пользовательского интерфейса для обновления. Это может стать старым быстро, и что-то не очень хорошо говорит о том, чтобы сделать конечный разработчик таким, чтобы...
Есть ли способ, которым моя библиотека может запускать/вызывать события/делегаты из основного потока пользовательского интерфейса?
В частности...
- Должен ли я автоматически "обнаруживать" "основной" поток для использования?
- Если нет, должен ли я потребовать, чтобы конечный разработчик вызывал некоторый (псевдо)
UseThisThreadForEvents()
метод при запуске приложения, чтобы я мог захватить целевой поток из этого вызова?