[OK]を、ので、私はいくつかの処理をやって起動するbacgroundワーカースレッドを開始しますが、経由して、元のワーカースレッドを監視する別のコール(Call2)を持っていると思いWebサービスでCall1を持っています参照?背景ワーカースレッド
これを行う方法に関するご提案はありますか?私は本当に私の処理を行うためにWinServiceから離れたいと思っています。よりリアルタイムにするために必要なので。
[OK]を、ので、私はいくつかの処理をやって起動するbacgroundワーカースレッドを開始しますが、経由して、元のワーカースレッドを監視する別のコール(Call2)を持っていると思いWebサービスでCall1を持っています参照?背景ワーカースレッド
これを行う方法に関するご提案はありますか?私は本当に私の処理を行うためにWinServiceから離れたいと思っています。よりリアルタイムにするために必要なので。
なぜサービスアプリケーションを使用するのが問題なのか分かりません。サービスは常に実行され、リアルタイムで監視することができます。
しかし、あなたが本当にその道を行くにしたくない場合は、他のオプションがあります。新しいスレッドを開始するには、ThreadPoolを使用するか、新しいスレッドを手動で開始します。そのスレッドは、Webサービスが実行されているアプリケーションプールのバックグラウンドで実行されます。
このためにタスクスケジューラライブラリを使用できます。これについてはQuartz.netをチェックしてください。
はIISがそれを決定した場合、Webサービスの実行はいつでも殺さすることができるアプリケーションドメインが必要なので、ジョブが完了するという保証がないことに注意してください。サービスアプリケーションを使用するとこれが修正されます。
私はアプリのドメインの問題については考えていませんでした。あなたは正しいのですが、これはまったく節約されません...新しい仕事のためにDBをチェックするタイマーに頼るのではなく、Windowsサービスにダイレクトイベントを送るのはいかがですか? –
.NET 3.5の場合は、WCFを使用してサービスアプリケーションで直接Webサービスをホストすることができます。そうすれば、サービスと直接関係するメソッドを直接公開することができます。それがオプションでない場合は、Remotingを使用してWebサービスからサービスアプリケーションと通信できます。これはあまり難しくありませんが、WCFのアプローチよりも不器用です。 –
私は、Call2がスレッドを「監視」することをあなたが理解しているかどうか分かりません。 Call2が、スレッドが行っているタスクに関連する進行状況を確認し、呼び出し元に報告することを意味しますか? – AnthonyWJones
それは私が必要としていることをexacly。私は私がここで答えを見つけたと思う... http://stackoverflow.com/questions/228775/net-web-service-backgroundworker-threads –
これは動作しますが、Call2からそのスレッドをチェックする良い仕掛けをハイブにしません。 。 –