ネットワーク操作があり、ネットワークメッセージング中に一部のWPF要素が更新されています。Dispatcher.Invokeが非同期で実行されているか、まったく実行されていないと思われる場合があります。
「クライアント」はlistbox
で、新しい接続があるたびに更新されています。
したがって、接続してください。
Dispatcher.Invoke(() =>
{
listBox.Items.Clear();
});
for (i = 0; i < waitingMachines.Count; i++) {
sb.Clear();
sb.Append((i + 1).ToString() + ") " + waitingMachines[i].Name + " - " + waitingMachines[i].CurrentMeasurement);
Dispatcher.Invoke(() =>
{
listBox.Items.Add(sb.ToString());
});
}
時にはlistBox.Items.Clear();
がまったく実行されないように見える、と私は、リストボックスで2つの同じエントリで終わります。
Invoke
を理解するには、次のInvoke
を実行する前にリストをクリアする必要があります。どのように重複したエントリが得られているのか分かりません。
まず、アイテム・ストリングのリストまたは配列を作成してから、単一のDispatcher呼び出しでクリア/追加操作を実行するのはなぜですか? – Clemens
クリスタルボールは、「新しい接続があるたびに」実際には動作せず、このコードは毎秒何千回も実行されていると言います。リストボックスの非常に迅速な更新は、サイケデリックな効果を生むことがあります。 Thread.Sleep(100)を追加して診断すると、これは問題が非常に異なって見えます。 –
@Clemens right ...それははるかに意味がある – pay