C # Ereignisse werden ausgelöst

8

Ich habe in letzter Zeit viel mit C # gearbeitet und festgestellt, dass der meiste Code, der Ereignisse in meinem Unternehmenscode auslöst, so gemacht wird:

%Vor%

Ich verstehe wirklich nicht warum, stattdessen können Sie das nicht tun:

%Vor%

BEARBEITEN:

Etwas zum Nachdenken, ich habe versucht, ein paar Tests zu diesem Thema:

%Vor%

Die unsichere Version bringt das Programm zum Absturz.

    
user472875 17.02.2012, 14:46
quelle

2 Antworten

9

Die erste Version versucht, das Ereignis threadsicher zu machen .

Siehe C # -Ereignisse und Thread-Sicherheit

Tatsächlich macht es, wie in der Diskussion gesagt, den Thread nicht sicher. Daher würde ich stattdessen die zweite Version verwenden, die kürzer ist.

EDIT: Event-Thread-Sicherheit ist wirklich schwer zu implementieren. Sehen Sie sich an, wie es aussehen könnte ... Wenn Sie Wenn Sie nicht wirklich mit mehreren Threads arbeiten, die Ereignisse registrieren / aufheben, sollten Sie keine Zeit mit Thread-Sicherheit verschwenden.

    
ken2k 17.02.2012, 14:49
quelle
0

Die zweite Version ist nicht Thread-sicher.

%Vor%

Wenn der letzte Handler sich nach dem if (Initialized != null) abmeldet, endet die Ausnahme mit null ref.

    
VoodooChild 17.02.2012 14:51
quelle

Tags und Links