Como posso fazer um manipulador de eventos executar de forma assíncrona?

Eu estou escrevendo um programa Visual C # que executa um loop contínuo de operações em um thread secundário. Ocasionalmente, quando esse segmento termina uma tarefa, quero que ele acione um manipulador de eventos. Meu programa faz isso, mas quando o manipulador de eventos é acionado, o thread secundário aguarda até que o manipulador de eventos seja concluído antes de continuar o thread. Como faço para continuar? Aqui está a maneira que eu tenho atualmente estruturado ...

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

}

Esse código faz parte de uma API de um dos meus dispositivos. Quando o evento OperationFinished é disparado, eu quero que o aplicativo cliente seja capaz de fazer o que for necessário (ou seja, atualizar a GUI de acordo) sem fazer uso da operação da API.

Além disso, se eu não quiser passar nenhum parâmetro para o manipulador de eventos, minha sintaxe será correta usandoOperationFinished(null, new EventArgs()) ?

questionAnswers(7)

yourAnswerToTheQuestion