1

クライアント接続を継続的にリッスンする1つのサーバーを作成しています。ユーザーの操作は必要ありません。ということで、サービス化しようと思います。正常にインストールできましたが、エラー 1053 が表示される以外は正常に実行されませんでした。start/stop メソッドは 30 秒以内に返される必要があることがわかりました。私の知る限り、これはサーバーがアクションを停止して 30 秒以内に戻る必要があることを意味します。クライアントはいつでも接続する可能性があるため、サーバーにこの制約を暗示することはできません。このサーバーをサービスとしてインストールする方法を教えてもらえますか?

注 1: Windows プラットフォーム、c# 言語、および VS 2010 を使用しています。

注 2: その他のアイデアも歓迎します。

4

1 に答える 1

1

あなたのコードを見ずに、ここであなたが言っていることを続けることなく、スレッドを実装する必要があると思います.

現在、アプリケーションは実行を開始し、クライアントが接続するまでブロックします。これはベスト プラクティスではありません。または、Windows サービスの場合、30 秒のために不可能です。限界。

すべきことは、サービスを開始してすべてを初期化し (30 秒以内に返されるようにするため)、別のリッスン スレッドを開始することです。クライアントが接続したときに別のスレッドを開始することも良い考えです。その場合、1 つだけでなく複数のクライアントを処理できます。

もちろん、どのトランスポート層などを使用しているのかわかりませんが、TCP に基づくこの例を確認してください: http://www.switchonthecode.com/tutorials/csharp-tutorial-simple-threaded-tcp-server

于 2012-08-01T08:47:52.553 に答える