我正在尝试制作一个类似超级终端的程序,但我无法让串行端口获取一条线并将其发布在后台的列表框中。在下面的示例中,它将冻结整个程序,而 for 循环运行 100 次,然后吐出所有 100 行...我希望它逐行更新,但我不确定它为什么这样做。
我也尝试过 backgroundworker 但它似乎做了同样的事情。
提前致谢...
static System.Threading.Thread thread;
public void button2_Click(object sender, RoutedEventArgs e)
{
if(Sp.IsOpen){
stop = false;
thread = new System.Threading.Thread(
new System.Threading.ThreadStart(
delegate()
{
System.Windows.Threading.DispatcherOperation
dispatcherOp = listBox1.Dispatcher.BeginInvoke(
System.Windows.Threading.DispatcherPriority.Normal,
new Action(
delegate()
{
for(int y = 0; y <100; y++)
{
String line = Sp.ReadLine();
listBox1.Items.Add(line);
}
}
));
}
));
thread.Start();
}else{
item.Content = ("No Comm Ports are Open");
item.IsSelected = true;
listBox1.Items.Add(item);
}
}