Actualización de GUI C # y comunicación de puerto serie asíncrono

Estoy tratando de crear una aplicación que se comunique con el hardware a través del puerto serie e informe los resultados a la interfaz gráfica de usuario.

Actualmente, KeyEvents realiza el movimiento a través de la GUI que activa el dibujo de la próxima "página" de la GUI. Sin embargo, en un paso (después de presionar la tecla) necesito dibujar una nueva página y enviar algunos comandos a través del puerto serie.

El envío del comando se realiza a través de:

port.Write(data, 0, data.Length);

Luego espero la respuesta esperando que se active DataReceivedHandler: solo señala que hay datos en espera y los datos se están procesando en otro método.

Al principio, simplemente puse el comando de envío y recepción en la función de dibujo de la página después de las "partes de dibujo", sin embargo, se quedó atascado: los datos se estaban transfiriendo, pero la página no se dibujó, estaba congelada.

Luego hice un método asíncrono:

private async void SendData()
{
  await Task.Run(() => serialClass.SendAndReceive(command));
  // process reply etc.
}

Que se usa así:

public void LoadPage()
{
  image = Image.FromFile(path);
  //do some stuff on image using Graphics, adding texts etc.
  picturebox1.Image = image;
  SendData();
}

Funciona bien, sin embargo, necesito "volver a cargar" la página (para volver a llamar a LoadPage). Si lo hago dentro del método asíncrono como este:

private async void SendData()
{
  await Task.Run(() => serialClass.SendAndReceive(command));
  // process reply etc.
  LoadPage();
}

Entonces, obviamente, la imagen no se actualizará, aunque los datos se enviarán a través del puerto serie. ¿Es posible verificar de alguna manera si la función asincrónica se terminó y desencadenar un evento en el que pueda volver a cargar la página?

Hasta ahora he intentado usar BackGroundWorker Work Complete y Property Change. Los datos se enviaron nuevamente, pero la imagen no se volvió a cargar. ¿Alguna idea de cómo puedo lograr eso?

Gracias de antemano por la ayuda, Saludos cordiales

Respuestas a la pregunta(1)

Su respuesta a la pregunta