Thread-übergreifender Vorgang ungültig (Zugriff auf WinForm-Elemente von anderen Modulereignissen aus?)

Ich habe ein Modul mit einem Ereignis für die serielle Schnittstelle sygnal

serialPort.DataReceived.AddHandler(SerialDataReceivedEventHandler(DataReceived));

wo DataReceived ist

let DataReceived a b =
    rxstring <- serialPort.ReadExisting()
    arrayRead <- System.Text.Encoding.UTF8.GetBytes(rxstring)
    if arrayRead.[0] = 0x0Auy then
        ProcessData(a, null)

und ProcessData ruft die WinForms-Methode auf

let ProcessData(a, b) =
    dataProcessor.Invoke(a, b) |> ignore

welches ist

private void ProcessData(object sender, EventArgs e) {
   byte[] m = Core.ncon.ArrayRead;
   switch (m[1]) {
      case 0x01: {
          if (m.Length > 5) {
             int myval = BitConverter.ToInt32(m, 3);
             textBox1.Text += " val: " + myval.ToString() + " ";

aber wenn es versucht, auf textBox1 zuzugreifen, erhalte ich:

Threadübergreifende Operation nicht gültig: Steuerelement 'textBox1', auf das von einem anderen Thread als dem Thread zugegriffen wurde, für den es erstellt wurde.

Die Frage ist also, wie von anderen Modulereignissen aus auf WinForm-Elemente zugegriffen werden kann.

Antworten auf die Frage(2)

Ihre Antwort auf die Frage