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.