¿Interactuar con el subproceso de la interfaz de usuario de un método de devolución de llamada Async?

Tengo un método que se llama de forma asíncrona cuandoSystem.Net.Sockets.NetworkStream.BeginRead completa

 skDelegate = New AsyncCallback(AddressOf skDataReceived)
 skStream.BeginRead(skBuffer, 0, 100000, skDelegate, New Object)

En ese método de devolución de llamada, necesito interactuar con el hilo de la interfaz de usuario.

Sub skDataReceived(ByVal result As IAsyncResult)
    CType(My.Application.OpenForms.Item("frmMain"), frmMain).refreshStats(d1, d2)
End Sub

Esto provoca una excepción después de que se completa el método. (cuando se ejecuta End Sub)

La operación Deshacer encontró un contexto que es diferente de lo que se aplicó en la operación Set correspondiente. La causa posible es que se estableció un contexto en el subproceso y no se revertió (deshecho).

Entonces, ¿cómo interactúo con el hilo de la interfaz de usuario desde el método de devolución de llamada? ¿Qué estoy haciendo mal?

Respuestas a la pregunta(4)

Su respuesta a la pregunta