1 回答
TA贡献1921条经验 获得超9个赞
您正在处理程序中运行无限循环Afisare_Click
,该循环与您的 UI 在同一线程中运行。这意味着 UI 将无法呈现控件更改。
Thread.Sleep
代码将上下文切换到其他线程,但不是 UI 线程。
您的方法应该是使用Timer。
public partial class Form1 : Form
{
private Timer _timer;
public Form1()
{
InitializeComponent();
}
private void Form1_Load(object sender, EventArgs e)
{
_timer = new Timer();
_timer.Interval = 200;
_timer.Tick += _timer_Tick;
_timer.Enabled = true;
_timer.Start();
}
private void _timer_Tick(object sender, EventArgs e)
{
// This function will be called every 200 ms.
// Read the information from port, update the UI.
string a = port.ReadExisting();
afisare.Text = a;
}
private void Form1_FormClosed(object sender, FormClosedEventArgs e)
{
_timer.Stop();
if (port != null && port.IsOpen)
{
port.Close();
}
}
}
- 1 回答
- 0 关注
- 109 浏览
添加回答
举报