ハイパーターミナルのようなプログラムを作成しようとしていますが、シリアル ポートで回線を取得してバックグラウンドのリスト ボックスにポストするのに問題があります。以下の例では、 for ループが 100 回実行されている間にプログラム全体がフリーズし、100 行すべてが吐き出されます... 行ごとに更新したいのですが、なぜそれを行っているのかわかりません。
バックグラウンドワーカーも試してみましたが、同じことをしているようでした。
前もって感謝します...
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);
}
}