1

Winforms C#アプリケーションを作成して、本番サーバーでスレッドを生成し、ジョブを実行しました。サービスを構成して実行するためのGUIが必要なため、winformsアプリケーションでジョブを作成しました。

最近サーバーを変更しましたが、一定のアイドル時間の後にログオフし、アプリケーションがシャットダウンしたため、ログアウトしても実行し続けるようにWindowsサービスを作成する必要があります。問題は、GUIが必要なことです。

GUIインターフェイスを使用してWindowsサービスを作成するための最良の方法は何ですか(ログオフ時に実行する必要があるため)?

4

3 に答える 3

0

プロセス間でやり取りする簡単な方法が必要な場合は、NamedPipeServerStreamNamedPipeClientStreamも使用できます。このテクノロジは古く、あまり賢くはありませんが、使いやすく (C# でのストリーム管理を知っている場合)、高速です。

唯一の欠点は、すぐに使用できるオブジェクトについて話さないことです。しかし、その目的のために、私は XML シリアライゼーションを使用します。

  • 送信側: Object => XML String => byte[]
  • 受信側: byte[] => XML String => Object

シンプルにするために、アプリケーションの void main(String[] args) で行うように、レシーバー側で解析する String[] オブジェクトを常に使用します。

サービスではCustomCommandsも使用できますが、これはパラメーターを指定せずにメソッドを生成するようにサービスに要求するだけです。サービスがパラメータにアクセスできる場所 (つまり、XML ファイル) にパラメータを保存する場合を除きます。

于 2012-09-03T15:19:59.707 に答える
0

実際のWindows サービスを作成する場合

ServiceController クラスを使用して、サービスに関する情報を開始、停止、および取得できます。

編集

サービスからのデータが必要な場合は、WCF またはソケットを使用してサービスと通信できます。もう 1 つのオプションは、既知のフォルダーにあるファイルでサービスの結果を公開することです。

于 2012-06-04T08:39:31.413 に答える
0

ユーザー セッションで Windows サービス (= Interactive Windows service ) を生成することはお勧めできず、エクスプロイトと見なされます。ケニーが言ったように、アプリケーションをGUIとサービス部分に分割することで、プロジェクトでこの問題を解決しました。それらは WCF 経由で通信します。もう 1 つの可能性は、Memory-Mapped files です

于 2012-06-05T15:13:33.277 に答える