私は小さな問題があります:私はオブジェクトのログを持っています。このオブジェクトは、書き込み関数が呼び出されたときにイベントを発生させます。現在のアプリケーション・ディスパッチャーでwrite関数を呼び出す必要はありません。 Application.Current.Dispatcher.CheckAccess()がfalseを返した場合c#並行性と順序 - Dispatcher.BeginInvoke
がprotected void OnLoggingEnqueuedMessage(object sender, EnqueuedMessageEventArgs e)
{
if (Application.Current.Dispatcher.CheckAccess())
AddLogEntry(e.LogEntry);
else
Application.Current.Dispatcher.BeginInvoke(new Action(() => { AddLogEntry(e.LogEntry); }), null);
}
追加された項目の順序を台無しにすることができますので、次のコードを前提としています。 BeginInvokeでエンキューされた操作は、BeginInvokeが呼び出されたのと同じ順序で実行する必要はありませんが、アイテムを正しい順序で追加するにはどうすればよいですか?あなたが言った
これはそうではありません。 OnLoggingEnqueuedMessageが何らかの順序で呼び出されると仮定しています。スレッド間にはそのような順序はありません。 –