Tôi có một mô-đun whith một sự kiện cho cổng nối tiếp sygnalCross-chủ đề hoạt động không hợp lệ (Làm thế nào để truy cập vào các yếu tố WinForm từ một sự kiện mô-đun?)
serialPort.DataReceived.AddHandler(SerialDataReceivedEventHandler(DataReceived));
nơi DataReceived là
let DataReceived a b =
rxstring <- serialPort.ReadExisting()
arrayRead <- System.Text.Encoding.UTF8.GetBytes(rxstring)
if arrayRead.[0] = 0x0Auy then
ProcessData(a, null)
và ProcessData đang gọi phương thức WinForms
let ProcessData(a, b) =
dataProcessor.Invoke(a, b) |> ignore
là
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() + " ";
nhưng khi nó đang cố gắng truy cập vào TextBox1 tôi nhận được:
Cross-chủ đề hoạt động không hợp lệ: Control 'TextBox1' truy cập từ một thread khác với thread nó đã được tạo ra về.
Vì vậy, câu hỏi là cách truy cập phần tử WinForm từ một sự kiện mô-đun khác?
lẽ MethodInvoker? – Zenwalker