Der Delegate ist quasi ein Zeiger auf eine Methode. Und den kann man halt einer anderen Methode übergeben. Der Invoke Befehle sagt dem GUI Objekt (in dem Fall eine Listbox): He ich will auf dich aus einem anderen Thread zugreifen.
In meiner Beispielanwendung hab ich den delegaten zuerst deklariert:
Und dann ein Objekt davon deklariertCode:delegate void InvokeLB(string Data);
Und dann in der Methode bCreateSP_Click eine neue Instanz erzeugt:Code:InvokeLB lbRecievedDelegate;
Die auf diese Methode hier verweistCode:lbRecievedDelegate = new InvokeLB(InvokeLBRecieved);
Und in der Methode die Aufgerufen wird wenn neue Daten am SerialPort verfügbar sind rufe ich dann die Invoke Methode der Listbox lbRecieved auf und übergebe ihr den davor instanzierten Delegaten und die Parameter (in dem Fall die Daten die Empfangen wurden)Code:void InvokeLBRecieved(string Data) //Parameter stimmen mit der Deklaration des Delegaten überein { lbRecieved.Items.Add(Data); }
Code:lbRecieved.Invoke(lbRecievedDelegate,new object[]{RecievedLine});







Zitieren


Lesezeichen