C # 2.0-Generika: So erstellen Sie ein Action-Objekt mit null Parametern

8

Zuerst verwende ich VS2005 und C # 2.0.

Ich versuche, eine Combobox 'Text-Eigenschaft innerhalb des SelectedIndexChanged-Ereignisses festzulegen. Von einem anderen Thread hier auf StackOverflow wurde dies folgendermaßen vorgeschlagen:

%Vor%

Nun, zuerst gibt dies einen Compilerfehler für mich zurück. Ich glaube, das liegt daran, dass sich das Action-Objekt in den beiden Sprachspezifikationen anders verhält. In C # 2.0 scheint das Action-Objekt die <T> -Struktur in allen Deklarationen zu benötigen. Vielleicht liege ich falsch, aber ich hätte das gerne geklärt.

Was ist Arbeit ist das Folgende:

%Vor%

Mir erscheint es jedoch sehr seltsam, dass ich das Action-Objekt mit einem Typparameter definieren muss (vor allem, weil ich keine Parameter übergeben will)! Irgendwie würde das Entfernen dieses Parameters das leere neue Objekt [] obsolet machen, was ich will.

Kann jemand mir helfen, den oben genannten Anruf zu vereinfachen?

Ist schließlich garantiert, dass BeginInvoke nach dem SelectedIndexChanged endet und damit die Texteigenschaft der Combobox mit dem richtigen Text aktualisiert?

Ich würde wirklich gerne die Antworten auf diese Fragen lernen.

    
Pedery 19.07.2009, 04:34
quelle

2 Antworten

9

Ich denke nicht, dass Action ohne Parameter in .NET 2.0 verfügbar ist Keine Sorge - verwenden Sie einfach einen anderen vordefinierten Delegattyp. MethodInvoker sollte den Job ausführen (void-Methode ohne Parameter).

Außerdem hat BeginInvoke zwei Überladungen - eine, die einen Delegaten benötigt, und eine, die einen Delegaten und ein Array von Objekten übernimmt.

%Vor%     
Filip Frącz 19.07.2009, 04:44
quelle
9

Sie könnten Ihren eigenen Aktionsdelegaten definieren.

delegate void Action()

Ich kann das Objekt, auf dem Sie BeginInvoke aufrufen, nicht sehen, aber wenn es ein Benutzeroberflächen-Steuerelement ist, das im selben Thread wie das Kombinationsfeld erstellt wird, wird der übergebene Delegat garantiert einige Zeit nach dem SelectedIndexChanged-Ereignishandler aufgerufen schließt ab.

    
Senthil Kumar 19.07.2009 04:55
quelle