1

これを行うためのより良い方法があれば教えてください。

私は WPF アプリを持っていますが、集中的な計算を実行する必要がある場合があるため、スレッドを生成して WPF アプリから実行するよりも、独自のサービスでこれを実行する方がよいと思います。

だからここに私の質問があります:

  • WPF アプリケーションが開かれているときに、Windows サービスも開かれるようにするにはどうすればよいですか? 同様に、アプリケーションが閉じられると、Windows サービスが停止しますか? 計算途中で止まっても構わない
  • Windows サービスに WPF アプリケーションと通信させるにはどうすればよいですか? Windows サービスから情報を取得する必要があります...実行中の計算の名前、完了率など、かなり基本的なことです。しかし、WPF アプリの GUI に表示できるように、何らかの方法でこの情報をサービスから取得できることが非常に重要です。
  • 重要なポイント: GUI が Windows サービスと対話する方法も必要です。たとえば、処理が必要な特定の計算をユーザーが選択できる GUI の領域を用意します。そのため、選択した計算のリストをサービスに送信して、計算のキューに追加して実行する方法が必要です。

私は WCF について少し読んだことがありますが、これまで使用したことがないので、私がやっていることに役立つかどうかはわかりません。

誰かがこれについて考えているなら、それは大歓迎です。かなり簡単なことのように思えますが、それに関する情報が見つかりません-間違った用語を検索している可能性がありますが、おそらく私がやろうとしていることの認識された名前がありますか?

ありがとう

4

1 に答える 1

1

私は WPF アプリを持っていますが、集中的な計算を実行する必要がある場合があるため、スレッドを生成して WPF アプリから実行するよりも、独自のサービスでこれを実行する方がよいと思います。

通常、これを行う必要はありません。WPF アプリケーションは既に実行されているため、スレッドの生成は、サービスを開始したり、IPC を使用してサービスと通信したりするよりも高速かつ簡単で、オーバーヘッドも少なくなります。通常、アプリケーションで計算を行うだけで、これについて行きます。


そうは言っても、私はあなたの質問に順番に答えようとします:

WPF アプリケーションが開かれているときに、Windows サービスも開かれるようにするにはどうすればよいですか? 同様に、アプリケーションが閉じられると、Windows サービスが停止しますか? 計算途中で止まっても構わない

これを行いたい場合は、サービスを使用しない方がよいでしょう。通常、サービスには、 Windowsの起動時に開始され、システムのシャットダウン時にシャットダウンされる有効期間があり、ユーザーとしては実行されません。これを起動するだけなら、通常の (コンソール) アプリケーションにして、 を使用Process.Startして起動します。これにより、必要に応じて を介してプロセスを強制終了することもできますProcess.Kill

Windows サービスに WPF アプリケーションと通信させるにはどうすればよいですか? Windows サービスから情報を取得する必要があります...実行中の計算の名前、完了率など、かなり基本的なことです。しかし、WPF アプリの GUI に表示できるように、何らかの方法でこの情報をサービスから取得できることが非常に重要です。

これは、多くの場合、「サービス」(またはアプリケーション) をWCFホストにすることによって行われます。その後、WPF アプリケーションは「サービス」のクライアントとして機能し、WCF を使用してメッセージを渡すことができます。

重要なポイント: GUI が Windows サービスと対話する方法も必要です。たとえば、処理が必要な特定の計算をユーザーが選択できる GUI の領域を用意します。そのため、選択した計算のリストをサービスに送信して、計算のキューに追加して実行する方法が必要です。

繰り返しますが、WCF ホストを起動するプロセスを作成すると、これが達成されます。

そうは言っても、これを行う強い理由がない限り、アプリケーション内でスレッド化を使用する方がはるかに簡単で (おそらくより良いでしょう)、個別のプロセスについて心配する必要はありません。

于 2013-03-19T16:09:45.857 に答える