Есть два объекта. Форма Windows с кнопкой и индикатором выполнения, а также другой объект, который обрабатывает алгоритм.
В объекте алгоритма есть событие и свойство. Событие ProgressChanged
, а свойство Progress
(что является целым).
В окне вызова кнопка запускает набор шагов в объекте алгоритма. При выполнении каждого шага (или подшагов) происходит событие ProgressChanged, и в окне появляется обработчик событий, который существенно увеличивает индикатор выполнения относительно свойства Progress.
Проблема, с которой я сталкиваюсь, состоит в том, что, поскольку алгоритм имеет возможность (и высокую вероятность) работать относительно длительное время, мне нужно переместить его в его собственный фоновый поток и отправить событие обратно в окно.
Моя проблема в том, что я не совсем уверен, что я делаю, когда дело доходит до многопоточности. Я посмотрел на Control.Invoke
и немного растерялся.
Может ли кто-нибудь указать мне правильное направление?