Witam
Mam problem z obsługą zdarzenia przy wykorzystaniu wielu wątków, otóż poniższy kod wyrzuca mi wyjątek wg. którego lokalne zdarzenie localMyEvent jest nullem. Mimo zastosowaniu locka i dodatkowego sprawdzenia czy zdarzenie nie jest nullem.
try
{
EventHandler<FileOperationEventArgs> localMyEvent;
lock (this.myEventLock)
{
localMyEvent = this.fileOperationFinished;
}
if (localMyEvent != null)
localMyEvent(this, new FileOperationEventArgs(FileOperationEventArgs.FileOperationType.Read));
}
catch (Exception ex)
{
MessageBox.Show(ex.ToString());
}
Problem jest zatem najprawdopodobniej tutaj
if (localMyEvent != null)
// jakby inny wątek wykorzystywał zdarzenie
localMyEvent(this, new FileOperationEventArgs(FileOperationEventArgs.FileOperationType.Read));
Jednakże zdarzenie globalne jest przypisywane do zdarzenia lokalnego i blokowane przy wykorzystaniu lock'a. Na chłopski rozum wg mnie powinno być ok.
Pozdrawiam