C# Win アプリケーションで 2 つのセカンダリ スレッドを実行しています。
最初のスレッドは、Sql Server プロファイル メッセージを読み取り、それを文字列としてリスト ボックスに追加して、一種のキューを形成します。他のスレッドは、これらのトレース メッセージを 1 つずつ送信し、それに応じてリストから削除します。
今、私はそれが問題を引き起こすと確信しています。1 つのスレッドのみが 2 つの関数のいずれかにアクセスできるようにする方法:
void AddItemThreadSafe(string item)
{
this.Invoke((MethodInvoker)delegate
{
listBoxCollection.Items.Add(item);
});
}
void RemoveItemThreadSafe()
{
this.Invoke((MethodInvoker)delegate
{
listBoxCollection.Items.RemoveAt(0);
});
}