службы Windows, пачынаючы, але неадкладна спыняць без памылак пасля OnStart ()

Я нядаўна перарабіў прыкладанне для праслухоўвання TCP-порта ў службу Windows, якая ўсталёўваецца і працуе выдатна на маім 32-бітнай Vista, ноўтбук. Праблема складалася ў тым, пасля яго ўстаноўкі, якая працуе, я паспрабаваў запусціць службу (праз Remote Dekstop) на 64-бітнай Win7 і акуратна перадаў мне памылку 1053, у асноўным аб тым, што служба таймаўт пры запуску.

Цяпер я атрымаў яго запусціць без памылак, але ўсё гэта не адразу з'яўляецца выхадам без якіх-небудзь памылак або любога eventLogging мінулага OnStart. Я паспрабаваў замяніць мой таймер з Threading, каб убачыць, калі гэта магчыма, былі праблемы з дзіўнага пачатку, але не пашанцавала там ... Вось гэта не OnStart метад абслугоўвання і метад, які прызначаны для запуску бесперапынна.

protected override void OnStart(string[] args)
    {
        myServer.Start();
        eventLog1.WriteEntry("Server started.");               
        mWorker = new Thread(StartUp);
        eventLog1.WriteEntry("Starting up CykelScore service.");
        mWorker.Start();//Start the service
        //timer.Start();             //Start the timer
    }

    private void StartUp(object arg)
    {
        while (true)
        {
            eventLog1.WriteEntry("Running.");
            if (mStop.WaitOne(10000)) return;
            {
                if (Monitor.dataCount > 0)
                {
                    string tmp = "";
                    eventLog1.WriteEntry("Antal tags: " + Monitor.dataCount.ToString());
                    lockedUp.WaitOne();
                    try
                    {
                        tmp = Monitor.PopData();
                    }
                    catch (Exception ex)
                    {
                        eventLog1.WriteEntry("Fejl:" + ex.ToString());
                    }
                    eventLog1.WriteEntry("Recieved: " + tmp);
                    string buffer = tmp;
                    string antenna = (buffer.Split(',')[0]).Replace(" ", "");
                    string time = buffer.Split(',')[2];
                    string RFIDNR = (buffer.Split(',')[1]).Replace(" ", "");

                    string[] ART = new string[3];
                    ART[0] = antenna;
                    ART[1] = RFIDNR;
                    ART[2] = time;

                    if (lastreceivedtagID == RFIDNR)
                    {
                        eventLog1.WriteEntry("Same tag as last time. No need to check database");
                    }
                    else
                    {
                        if (!DataHandler.LoggedInCurrentTimespan(ART))
                        {
                            try
                            {
                                DataHandler.SaveToLocal(ART);
                                eventLog1.WriteEntry("Data saved to local database");

                                DataHandler.SendToRemote(tmp, Monitor.server, Monitor.database, Monitor.username, Monitor.password);
                                eventLog1.WriteEntry("Data sent to remote database");
                            }
                            catch (Exception ex)
                            {
                                eventLog1.WriteEntry("Fejl" + ex.ToString());
                            }
                        }
                        else
                            eventLog1.WriteEntry("Discarding data. Already in local database");
                    }
                    lastreceivedtagID = RFIDNR;
                    lockedUp.ReleaseMutex();
                }
            }
        }
    }

Хто-небудзь ёсць якія-небудзь ідэі, што можа быць праблема?

2
Я не думаю, што гэта 32/64 біт пытанне. Лепшы спосаб, якім я магу думаць, каб высветліць, што пытанне павінен быў бы напісаць абгортку вакол вашага сэрвісу, які выклікае запуск/прыпынак працэдуры без неабходнасці менеджэр службы. Затым вы можаце пачаць гэтую праграму з дапамогай сеансу выдаленай адладкі і ўбачыць, дзе працэдура запуску адбою.
дададзена аўтар Dirk Dastardly, крыніца
Выкажам здагадку, што праблема ў вашым метадзе OnStart (). Дадаць ўваход дыягнаставаць яго.
дададзена аўтар Hans Passant, крыніца
Карыстаецеся Ці вы якія-небудзь знешнія бібліятэкі DLL?
дададзена аўтар Erno de Weerd, крыніца
Паглядзіце ў го прагляду падзей і паглядзець, калі ён паказвае якія-небудзь памылкі. Вы ж праверыць, калі што-то ўжо праслухоўвае порт, які вы служба выкарыстоўвае на скрынцы Win7?
дададзена аўтар user957902, крыніца
Цяпер у мяне ёсць ён у стане пачаць, але праз секунду яна спыняецца без якога-небудзь паведамлення. Там няма нічога іншага, праслухоўвае порт - я атрымаў eventlogging адбываецца ў OnStart, які паказвае мне, што яна праходзіць праз яго і заканчвае OnStart метад - але таймер, які ён пачынае па-відаць, не атрымлівае, каб выклікаць наступныя метады, ці нешта астатняе пойдзе не так, што я не ведаю.
дададзена аўтар GoD1x, крыніца
Не тое, што я ведаю (я не рабіў дадатак). Хоць ён павінен яшчэ працаваць, як прыкладання, папярэдне вокны-служба, па-ранейшаму працуе на сэрвэры я спрабую прымусіць яго працаваць далей, і я толькі дадаў спасылку сістэмы.
дададзена аўтар GoD1x, крыніца

адказаў няма

0