C#中的多线程错误

Ada*_*dam 6 .net c# multithreading

我正在尝试更新文本框.我认为我的线程代码可以解决问题,但事实并非如此.有人能帮忙吗?

new Thread((ThreadStart)delegate { txtCapacitance.Text = Math.Round(capacitance, 3).ToString(); }).Start();
Run Code Online (Sandbox Code Playgroud)

给出以下错误:

跨线程操作无效:控制'txtCapacitance'从其创建的线程以外的线程访问.

请注意,所有这些都是由dataReceived函数启动的,每当收到USB数据时都会调用该函数.

Mar*_*tos 6

UI对象只能从UI线程调用.这可以通过Control的Invoke方法完成:

txtCapacitance.Invoke((Action)(() => { txtCapacitance.Text = Math.Round(capacitance, 3).ToString(); }));
Run Code Online (Sandbox Code Playgroud)


Adr*_*der 4

你应该看看使用BackgroundWorker类

看一下

C# 后台工作教程