1

Dispatcher(.net 3.0)をWindowsサービス(.net 2.0で実行)に使用するための代替手段が必要です。そのようなことを達成する方法を教えていただけますか、それともリンクを教えていただけますか?

ディスパッチャにSynchronizationContext遅れがあることは知っていますが、サービスにどのように使用できるかわかりませんSynchronizationContext

Dispatcher(.net 3.0)に固執する必要があると思われる場合...どうすれば操作できますか( OnServiceStopOnServiceStart

編集済み: 詳細(...こちらも参照)

アイデアは、メソッドを介して相互に通信するいくつかの拡張機能/プラグインをWindowsサービスにホストしたいということExecuteCommand(type, params)です。

このメソッドは、プラグイン内から実行された場合に結果を受け取るために、サービスにイベントを発生させます。各プラグインは、このメソッドを呼び出す場所から独自のスレッドを持つことができるExecuteCommandため、結果を適切に返すために、すべての呼び出しを1つのスレッド(メインサービススレッド)に集めて同期させたいと思います。

これが、Dispatcherが登場した理由です。しかし、おそらく.net 2.0に何かを入れたいのですか、それとも私の場合はDispatcherが良いと思いますか?

ありがとう。

4

1 に答える 1

2

DispatcherWindowsサービスには、 (またはWindowsフォームのメッセージループ)のようなものはありません。あるスレッドから別のスレッドにマーシャリングする場合、「ターゲット」スレッドは独自の種類のメッセージループを実行している必要があります。

あなたが達成しようとしていることについてもっと教えていただければ、それはあなたを助けるのをより簡単にするでしょう。

編集:さて、基本的にプロデューサー/コンシューマーキューが必要なようです。1つのスレッドがキューに何かが存在するまで待機し、それを処理します。プロデューサーはいつでもキューに追加できます。

スレッドチュートリアルには、プロデューサー/コンシューマーキューの非常に単純な実装がありますが、より高度な実装がある可能性があります。(.NET 4を使用するとこれは簡単になりますが、.NET 2では難しくなります。)の実装を採用する場合は、一般的なものにして終了条件を追加することを検討してください。Joe Albahariには、もう1つの実装も検討する必要があります

于 2010-08-11T07:25:36.243 に答える