Nieprawidłowa operacja wątków (jak uzyskać dostęp do elementów WinForm z innych zdarzeń modułu?)
Mam moduł ze zdarzeniem dla sygnału portu szeregowego
serialPort.DataReceived.AddHandler(SerialDataReceivedEventHandler(DataReceived));
gdzie jest DataReceived
let DataReceived a b =
rxstring <- serialPort.ReadExisting()
arrayRead <- System.Text.Encoding.UTF8.GetBytes(rxstring)
if arrayRead.[0] = 0x0Auy then
ProcessData(a, null)
a ProcessData wywołuje metodę WinForms
let ProcessData(a, b) =
dataProcessor.Invoke(a, b) |> ignore
który jest
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() + " ";
ale gdy próbuje uzyskać dostęp do textBox1, otrzymuję:
Nieprawidłowa operacja wątków: Sterowanie „textBox1” uzyskiwane z wątku innego niż wątek, w którym zostało utworzone.
Pytanie brzmi: Jak uzyskać dostęp do elementów WinForm z innych zdarzeń modułu?