Проект - C#.События и многопоточный код в .NET
Итак, у меня есть куча многопоточного кода, который предназначен для работы в качестве библиотеки. Он находится в отдельном проекте из пользовательского интерфейса.
В моей библиотеке есть центральный объект, который необходимо создать до того, как будет создано все, что могло бы привести в действие события.
Возможно ли, чтобы этот главный объект был передан в некоторых объектах, чтобы мои события могли выяснить, когда им нужно будет вызвать, чтобы вернуться к основному потоку пользовательского интерфейса?
Я бы очень хотел, чтобы пользовательский интерфейс должен был сделать кучу вызова, поскольку его обработчики событий почти всегда будут вызваны из какого-то случайного фонового потока.
Да, это так, способ сформировать почтовый вызов немного сложнее, но это будет идеально. –
Я, вероятно, отложил это на отдельный поток, но я увидел пример, где метод, вызывающий событие, сравнивает текущий SyncrhonizationContext с тем, который я храню из пользовательского интерфейса. В WPF они никогда не сравниваются как истинные. Поэтому я получаю бесконечную рекурсию, и пользовательский интерфейс блокируется. Знаете ли вы неплохую проверку агентом, чтобы узнать, нужно ли мне делать сообщение? Должен ли я просто всегда называть это сообщение и просто публиковать мероприятие напрямую? –
Ну, вы всегда можете отправлять/отправлять и не беспокоиться об этом. Он будет иметь (незначительные) накладные расходы, если он не нужен, но обычно это не проблема. Если вы действительно находитесь в фоновом потоке, SynchronizationContext.Current будет пустым (так как «нормальные» потоки не привязаны к контексту). –