.NET Framework-Klassenbibliothek
Control..::.Invoke-Methode (Delegate)

Aktualisiert: November 2007

Führt den angegebenen Delegaten für den Thread aus, der das dem Steuerelement zugrunde liegende Fensterhandle besitzt.

Namespace:  System.Windows.Forms
Assembly:  System.Windows.Forms (in System.Windows.Forms.dll)
Syntax

Visual Basic (Deklaration)
Public Function Invoke ( _
    method As Delegate _
) As Object
Visual Basic (Verwendung)
Dim instance As Control
Dim method As [Delegate]
Dim returnValue As Object

returnValue = instance.Invoke(method)
C#
public Object Invoke(
    Delegate method
)
VisualC++
public:
Object^ Invoke(
    Delegate^ method
)
J#
public Object Invoke(
    Delegate method
)
Jscript
public function Invoke(
    method : Delegate
) : Object

Parameter

method
Typ: System..::.Delegate
Ein Delegat, der eine aufzurufende Methode im Threadkontext des Steuerelements enthält.

Rückgabewert

Typ: System..::.Object
Der Rückgabewert des aufgerufenen Delegaten bzw. nullNothingnullptrNULL-Verweis (Nothing in Visual Basic), wenn der Delegat keinen Wert zurückgibt.
Hinweise

Delegaten sind Funktionszeigern in den Sprachen C oder C++ ähnlich. Delegaten kapseln in einem Delegatobjekt einen Verweis auf eine Methode. Das Delegatobjekt kann anschließend an den Code übergeben werden, der die Referenzmethode aufruft. Die aufzurufende Methode kann zur Kompilierzeit unbekannt sein. Im Gegensatz zu Funktionszeigern in C oder C++ sind Delegaten objektorientiert, typsicher und sicherer.

Die Invoke-Methode durchsucht die übergeordnete Kette des Steuerelements, bis sie ein Steuerelement oder ein Formular findet, das über ein Fensterhandle verfügt, wenn das zugrunde liegende Fensterhandle des aktuellen Steuerelements noch nicht vorhanden ist. Wenn kein geeignetes Handle gefunden werden kann, löst die Invoke-Methode eine Ausnahme aus. Während des Aufrufs ausgelöste Ausnahmen werden an den Aufrufer weitergegeben.

zyzhdc6b.alert_note(de-de,VS.90).gifHinweis:

Abgesehen von der InvokeRequired-Eigenschaft können vier Methoden in einem Steuerelement threadsicher aufgerufen werden: Invoke, BeginInvoke, EndInvoke und CreateGraphics, wenn das Handle für das Steuerelement bereits erstellt wurde. Das Aufrufen von CreateGraphics vor dem Erstellen des Handles des Steuerelements in einem Hintergrundthread kann zu unzulässigen threadübergreifenden Aufrufen führen. Verwenden Sie bei allen anderen Methodenaufrufen eine der Aufrufmethoden für das Marshallen des Aufrufs an den Steuerelementthread.

Der Delegat kann eine Instanz von EventHandler sein. In diesem Fall enthält der Senderparameter dieses Steuerelement, und der Ereignisparameter enthält EventArgs..::.Empty. Der Delegat kann auch eine Instanz von MethodInvoker oder jedes anderen Delegaten sein, der eine leere Parameterliste akzeptiert. Das Aufrufen eines EventHandler-Delegaten oder eines MethodInvoker-Delegaten ist schneller als das Aufrufen eines anderen Delegattyps.

zyzhdc6b.alert_note(de-de,VS.90).gifHinweis:

Eine Ausnahme könnte ausgelöst werden, wenn der Thread, der die Meldung verarbeiten sollte, nicht mehr aktiv ist.

Hinweis zu Windows Mobile für Pocket PC, Windows Mobile für Smartphone, Windows CE:

In .NET Compact Framework-Anwendungen muss der Delegat eine Instanz von EventHandler sein. Ein Beispiel finden Sie unter Beispiel für Delegaten.

Beispiele

Im folgenden Codebeispiel werden Steuerelemente veranschaulicht, die einen Delegaten enthalten. Der Delegat kapselt eine Methode, mit der dem Listenfeld Elemente hinzugefügt werden. Diese Methode wird in dem Thread ausgeführt, der das zugrunde liegende Handle des Formulars besitzt. Wenn auf die Schaltfläche geklickt wird, führt Invoke den Delegaten aus.

Visual Basic
' The following code assumes a 'ListBox' and a 'Button' control are added to a form, 
' containing a delegate which encapsulates a method that adds items to the listbox.
Public Class MyThreadClass
   Private myFormControl1 As MyFormControl

   Public Sub New(myForm As MyFormControl)
      myFormControl1 = myForm
   End Sub 'New

   Public Sub Run()
      ' Execute the specified delegate on the thread that owns
      ' 'myFormControl1' control's underlying window handle.
      myFormControl1.Invoke(myFormControl1.myDelegate)
   End Sub 'Run

End Class 'MyThreadClass
C#
// The following code assumes a 'ListBox' and a 'Button' control are added to a form, 
// containing a delegate which encapsulates a method that adds items to the listbox.

   public class MyThreadClass
   {
      MyFormControl myFormControl1;
      public MyThreadClass(MyFormControl myForm)
      {
         myFormControl1 = myForm;
      }

      public void Run()
      {
         // Execute the specified delegate on the thread that owns
         // 'myFormControl1' control's underlying window handle.
         myFormControl1.Invoke(myFormControl1.myDelegate);
      }
   }
VisualC++
// The following code assumes a 'ListBox' and a 'Button' control are added to a form,
// containing a delegate which encapsulates a method that adds items to the listbox.
public ref class MyThreadClass
{
private:
   MyFormControl^ myFormControl1;

public:
   MyThreadClass( MyFormControl^ myForm )
   {
      myFormControl1 = myForm;
   }

   void Run()
   {
      // Execute the specified delegate on the thread that owns
      // 'myFormControl1' control's underlying window handle.
      myFormControl1->Invoke( myFormControl1->myDelegate );
   }
};
Plattformen

Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98, Windows CE, Windows Mobile für Smartphone, Windows Mobile für Pocket PC

.NET Framework und .NET Compact Framework unterstützen nicht alle Versionen sämtlicher Plattformen. Eine Liste der unterstützten Versionen finden Sie unter Systemanforderungen für .NET Framework.
Versionsinformationen

.NET Framework

Unterstützt in: 3.5, 3.0, 2.0, 1.1, 1.0

.NET Compact Framework

Unterstützt in: 3.5, 2.0, 1.0
Siehe auch

Referenz

Weitere Ressourcen

Tags :


Page view tracker