Grundsätzlich, wenn ich so etwas wie diese ...Ist ein Func <T> immer das gleiche Objekt?
class Bla
T Run(Func<T> myFun)
return myFun()
void SomeMethod()
Run(() => whatever())
und dann myfun immer das gleiche Objekt oder ein neues Objekt jedes Mal? Oder anders formuliert ... wenn ich eine Sperre setzen würde, würde das eine parallele Ausführung verhindern?
Fragen Sie, ob '() => was auch immer()' jedes Mal ein neues Delegate-Objekt erstellt? –
@ LasseV.Karlsen: ja. – FrankyBoy
Wenn Sie nicht wissen, wie ein Objekt erstellt wurde, können Sie * niemals * sicher sein, dass das Objekt zum Speichern des Sperrstatus geeignet ist. True für GetType(), true für * this *, double-true für ein Methodenargument, triple-true für ein Delegate-Objekt. Immer, * immer * erstelle dein eigenes Objekt mit 'new object()'. –