Thomas Woelfers Baustatik Blog

Baustatik-Software und was sonst des Weges kommt

Heute gelernt: Null - Race-Conditions bei Delegates

Dinge sind offensichtlicher immer schwieriger als man meinen möchte. Seit heute gilt das auch für den Aufruf von Delegates :-) . Der sieht normalerweise so aus:

if( Click != null) Click( arg1, arg2);

So ruft man das vermutlich normalerweise auf, aber diese Art des Aufrufs erzeugt eine Race-Condition. Ein anderer Thread kann den Handler zwischen dem 'if' und dem tatsächlich Aufruf entfernen. Was man tun muss ist, man muss eine Kopie anlegen und diese verwenden:

ClickHandler handler = Click;

if( handler != null) hander( arg1, arg2);

Vielen Dank an Eric Gunnerson für diesen Hinweis.

Comments are closed