バックグラウンドで実行し、着信トラフィックをリッスンする必要がある Windows サービスを作成しようとしています (通常および通常の TCP リスナー)
私のコードは次のとおりです。
private TcpListener server;
public void startServer()
{
// EventLog.WriteEntry(source, "connected on: " + ipAddress.ToString() + " port: " + Service1.Port.ToString());
server = new TcpListener(IPAddress.Parse("127.0.0.1"), Service1.Port);
server.Start();
while (true)
{
var client = server.AcceptTcpClient();
new Thread(work).Start(client);
}
public void work(object client)
{
string msg = null;
var clientLocal = (TcpClient)client;
using (NetworkStream ns = clientLocal.GetStream())
using (StreamReader sr = new StreamReader(ns))
{
byte[] msgFullArray = new UTF8Encoding(true).GetBytes(msg);
fs.Write(msgFullArray, 0, msg.Length);
}
今、私が自分のサービスを開始するたびに私のサービスを開始しようとするたびにフリーズするので、作業方法をまったく見ていない場合:
var client = server.AcceptTcpClient();
つまり、サービスが Thread または Work メソッドを使用することはありません。以前のログから、while ループに入り、サービスがタイムアウトすることがわかります。