Windowsサービスが開始されますが、OnStart()の後にエラーなしで直ちに停止します。

私は最近、TCPポートのリスニングアプリケーションをWindowsサービスに変換しました。これは、32ビットVistaのラップトップに完全にインストールされて実行されます。 問題は、インストール後に動作し、64ビットWin7でサービスを(リモートのDekstopを介して)実行しようとしましたが、起動時にサービスがタイムアウトしたというエラー1053がきれいに渡されました。

今すぐエラーなしで起動するようにしましたが、エラーやイベントログがなくてもただちに終了します。 私は私のタイマーをスレッディングに置き換えてみましたが、これは奇妙なスタートで問題になっていたかもしれないかどうかを見ていますが、そこに運がありません...サービスの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,
今すぐ起動することができますが、1秒後に予告なく停止します。ポート上で聞いていることは他にありません - OnStartでイベントログが処理されています。OnStartメソッドが終了し、OnStartメソッドが終了したことを示していますが、起動したTimerは次のメソッドなどを呼び出すことはありませんそれ以外は私が気づいていない間違っています。
追加された 著者 GoD1x,
私が知っていることではない(私は申請をしなかった)。それはまだ実行する必要がありますが、アプリケーションとして、pre-windows-serviceはまだ実行しているサーバー上で実行されています。システム参照のみを追加しました。
追加された 著者 GoD1x,

答えはありません

0