Jak sprawić, aby moduł obsługi zdarzeń działał asynchronicznie?

Piszę program Visual C #, który wykonuje ciągłą pętlę operacji na wątku pomocniczym. Czasami, gdy wątek kończy zadanie, chcę, aby wyzwalał moduł obsługi zdarzeń. Mój program to robi, ale gdy wyzwalana jest procedura obsługi zdarzeń, wątek pomocniczy czeka, aż procedura obsługi zdarzeń zostanie zakończona, zanim kontynuuje wątek. Jak mogę to kontynuować? Oto sposób, w jaki obecnie mam strukturę ...

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.
  }

}

Ten kod jest częścią interfejsu API dla jednego z moich urządzeń. Gdy wyzwalane jest zdarzenie OperationFinished, chcę, aby aplikacja kliencka była w stanie zrobić wszystko, co jest potrzebne (tj. Odpowiednio zaktualizować GUI) bez naruszania działania interfejsu API.

Ponadto, jeśli nie chcę przekazywać żadnych parametrów do obsługi zdarzeń, moja składnia jest poprawna przy użyciuOperationFinished(null, new EventArgs()) ?

questionAnswers(7)

yourAnswerToTheQuestion