Wie kann ich einen Eventhandler asynchron ausführen lassen?

Ich schreibe ein Visual C # -Programm, das eine fortlaufende Schleife von Vorgängen auf einem sekundären Thread ausführt. Gelegentlich, wenn dieser Thread eine Aufgabe beendet, möchte ich, dass er einen Eventhandler auslöst. Mein Programm macht das, aber wenn der Ereignishandler ausgelöst wird, wartet der sekundäre Thread, bis der Ereignishandler beendet ist, bevor er den Thread fortsetzt. Wie mache ich es weiter? So habe ich es derzeit aufgebaut ...

class TestClass 
{
  private Thread SecondaryThread;
  public event EventHandler OperationFinished;

  public void StartMethod()
  {
    ...
    SecondaryThread.Start();      //start the secondary thread
  }

  private void SecondaryThreadMethod()
  {
    ...
    OperationFinished(null, new EventArgs());
    ...  //This is where the program waits for whatever operations take
         //place when OperationFinished is triggered.
  }

}

Dieser Code ist Teil einer API für eines meiner Geräte. Wenn das OperationFinished-Ereignis ausgelöst wird, möchte ich, dass die Clientanwendung in der Lage ist, alles zu tun, was sie benötigt (d. H. Die GUI entsprechend zu aktualisieren), ohne die API-Operation zu beeinträchtigen.

Auch wenn ich keine Parameter an die Ereignisbehandlungsroutine übergeben möchte, stimmt meine Syntax mitOperationFinished(null, new EventArgs()) ?

Antworten auf die Frage(7)

Ihre Antwort auf die Frage