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 UI의 속성이 업데이트되고 OnPropertyChanged 이벤트가 호출됩니다. 코드 자체는 더 더 문제가없는 다음 threadsave을하지 않는 경우
:
스레드를 사용하여 편집 한 후 : 내 답변에서 언급 한 것처럼 : 스레드 안전성은 메서드의 필수 요소이며, 사용자가 수행하는 작업과 스레드를 실행할 때 매우주의해야합니다. 당신은 방법들을 호출합니다 ...다른 프로세스들로부터 (그리고 그 중 하나는 꽤 많은 문제를 제기 할 수 있습니다. – Thomas