我正在嘗試製作一個超級終端程序,並且無法獲取串行端口並將其發佈到後臺的列表框中。在下面的例子中,它會凍結整個程序,而for循環運行100次,然後吐出所有100行......我希望它逐行更新,我不知道爲什麼它會這樣做。在後臺更新列表框WPF
我也試過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);
}
}
和正常工作。與你當前的代碼你持有的BeginInvoke爲100線。你需要100個BeginInvoke。 – Paparazzi