Laden...

InvokeEvent<> - generische invoke Lösung

Erstellt von cruiser vor 15 Jahren Letzter Beitrag vor 15 Jahren 2.747 Views
cruiser Themenstarter:in
1 Beiträge seit 2009
vor 15 Jahren
InvokeEvent<> - generische invoke Lösung

Beschreibung:

Da ich aus diesem Forum schon so einiges rausziehen konnte möchte ich als Einstieg gleich etwas zurück geben. Bei meinen Versuchen mit mehreren Threads bin ich gleich erst mal über das Invoke gestolpert. Nach einigem Probieren ist schließlich diese Klasse entstanden. Sie wird mit Nachfahren von EventArgs spezialisiert. Das ist insofern logisch, da sie als Mittler zwischen Aufruf im Thread und GUI-Event konzipiert ist.

Freigegeben ist der Code unter der MIT-Lizenz. Für Verbesserungsvorschläge bin ich gern offen.

Ein beispielhafter Einsatz:


private void button1_Click(object sender, EventArgs e) {
  Thread t = new Thread(new ParameterizedThreadStart(startThread));
  //MessageEventArgs besitzt eine zusätzliche Eigenschaft Message vom Typ string
  InvokeEvent<MessageEventArgs> MessageEvent = new InvokeEvent<MessageEventArgs>;(this);
  MessageEvent.OnEvent += ME_OnEvent;
  t.Start(MessageEvent);
}

void ME_OnEvent(object sender, MessageEventArgs e) {
  MessageBox.Show(e.Message);
}

private void startThread(object o) {
  InvokeEvent<MessageEventArgs> MessageEvent = (InvokeEvent<MessageEventArgs>;)o;
  MessageEventArgs args = new MessageEventArgs();
  args.Message = "Dies ist ein Test";
  MessageEvent.DoEvent(this, args);
}

Edit:

  • wirft jetzt Exception wenn null als control übergeben wird
  • XML-Docs hinzugefügt

Schlagwörter: Invoke, Event, Thread