У меня есть приложение, написанное на C#. У меня есть класс (например, ClassA), который имеет простое событие (код ниже). Событие повышается, чтобы пользователь обновлял ход выполнения кода.многопоточное и поднятие событий
public delegate void MyDelegateProgessUpdate(string value);
public event MyDelegateProgessUpdate ProgressUpdate;
При запуске приложения создается список объектов ClassA (максимум до 8). Таким образом, все 8 объектов будут поднимать событие (в своем классе) - это работает отлично, поскольку я только что его протестировал. Однако мне было интересно, если бы два объекта подняли событие одновременно, если возникнет проблема?
Редактировать
Я хотел бы упомянуть следующие детали. Список объектов ClassA будет работать одновременно, поэтому возможно, что события могут быть подняты одновременно.
Task[] myTasks = new Task[numThreads];
for (int i = 0; i < myTasks.Length; i++)
myTasks [i] = Task.Factory.StartNew(ClassA[i].DoSomeWork, someData[i]);
Это все делается на фоне рабочего потока. Когда событие поднимается, свойство в моем WPF-интерфейсе обновляется и вызывается событие OnPropertyChanged.
После редактирования с помощью потоков: Тогда, как я упомянул в своем ответе: Безопасность потоков - это необходимость для методов, и вам также нужно быть очень осторожными, что они делают, и как может быть, что вам нужно использовать invoke, когда вы вызываете методы, ...от других процессов (и что можно вызвать немало проблем ... наткнулся на него снова и снова) – Thomas