¿Cómo hago que un eventhandler se ejecute de forma asíncrona?

Estoy escribiendo un programa de Visual C # que ejecuta un bucle continuo de operaciones en un subproceso secundario. Ocasionalmente, cuando ese hilo termina una tarea, quiero que active un manejador de eventos. Mi programa hace eso, pero cuando se activa el controlador de eventos, el subproceso secundario espera hasta que finaliza el controlador de eventos antes de continuar con el hilo. ¿Cómo lo hago continuar? Esta es la forma en que actualmente lo tengo estructurado ...

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

}

Este código es parte de una API para uno de mis dispositivos. Cuando se desencadena el evento OperationFinished, quiero que la aplicación cliente pueda hacer lo que sea necesario (es decir, actualizar la GUI en consecuencia) sin interrumpir la operación de la API.

Además, si no deseo pasar ningún parámetro al controlador de eventos, mi sintaxis es correcta utilizandoOperationFinished(null, new EventArgs()) ?

Respuestas a la pregunta(7)

Su respuesta a la pregunta