0

私は観察可能なコレクションを持っています

var QueryList = new ObservableCollection<QueryData>();

このコレクションの CollectionChanged イベントがトリガーされたときに OnQueryListCollectionChanged メソッドを実装したとします。秘訣は、このメソッドを新しいスレッドで実行したいということです。

QueryList.CollectionChanged += new System.Collections.Specialized.NotifyCollectionChangedEventHandler(new ThreadStart(OnQueryListCollectionChanged));

上記の行が正しくないことはわかっていますが、コレクションの NotifyCollectionChangedEventHandler デリゲートでメソッド OnQueryListCollectionChanged を新しいスレッドにポイントする方法が正確にはわかりません。

どんな助けでも大歓迎です。

ありがとう。

4

1 に答える 1

1

ハンドラーの登録とは別のスレッドでイベントを処理する直接的な方法はありません。

イベントをメソッドにポイントし、そこから新しいスレッドを生成して作業を行うことができます。はい、発生したイベントはメインスレッドを中断する可能性がありますが、新しいスレッドを開始するのに十分な時間だけです.

ちなみに、スレッドを直接使用するのではなく、新しいTaskクラスを使用することをお勧めします。次を参照してください:タスクとスレッドの違いは何ですか?

于 2013-04-05T15:11:55.250 に答える