TCP IP port d'écoute dans le Service windows

Je suis en train de créer un service windows qui doit s'exécuter en arrière-plan et d'écouter le trafic entrant (normale et régulière d'écoute TCP)

mon code est:

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);
            }

maintenant, si vous ne regardez pas à la méthode de travail à tous, comme à chaque fois que je commence mon service il gèle à chaque fois que j'essaie de le lancer à mon :

 var client = server.AcceptTcpClient();

sens de mon service n'est jamais à utiliser le Fil ou ma méthode de Travail..
je peux voir à partir de la précédente journalisation qu'il entre dans ma boucle while et puis juste à temps le service

  • Pas clair ce que l'appel de startServer. Si c'est être appelé directement par votre OnStart méthode, qui est un problème. Comme vous l'avez observé, AcceptTcpClient blocs jusqu'à ce qu'un client s'affiche, mais le fil OnStart est appelée sur ne vous appartient pas et vous ne devriez pas le bloquer.
  • eh bien vous avez raison que ma méthode onstart appelle "serveur.startServer();" mais je ne suis pas sûr de comprendre comment résoudre le problème alors?
InformationsquelleAutor Pilsneren | 2016-08-23