0

C# で記述されたアプリケーションがあります。基本的にはexeです。このアプリケーションは、3 秒間隔でネットワークをスキャンし、データベースにネットワーク情報を入力します。

このアプリケーションをasp.net mvcから数秒間実行してから停止し、再度開始して停止したいと考えています。

開始ボタンをクリックしてexeを開始し、停止ボタンをクリックして停止する必要があります。exe は、呼び出された後に停止ボタンをクリックするまで継続的に実行されます。

このexeをasp.net mvcフレームワークから呼び出すことはできますか?

はいの場合、どのように行うことができますか?いくつかの指針が必要です。私を提供してください。

4

1 に答える 1

0

名前空間 System.Diagnostics と System.Timers が必要です。次に、以下の手順に従います。

    static System.Timers.Timer tTimer;
    const Int32 iInterval = 30;
    static Boolean IsProcessRunning = false;
    static Int32 iProcessID = 0;

    static Int32 SetTimerInterval(Int32 minute)
    {
        if (minute <= 0)
            minute = 60;
        DateTime now = DateTime.Now;

        DateTime next = now.AddMinutes((minute - (now.Minute % minute))).AddSeconds(now.Second * -1).AddMilliseconds(now.Millisecond * -1);

        TimeSpan interval = next - now;

        return (Int32)interval.TotalMilliseconds;
    }

    static void timer_Elapsed(object sender, EventArgs e)
    {   
        if (!IsProcessRunning)
        {   
            ProcessStartInfo objStartInfo = new ProcessStartInfo();
            objStartInfo.FileName = "C:\\Windows\\notepad.exe";

            Process objProcess = new Process();
            objProcess.StartInfo = objStartInfo;
            objProcess.Start();

            iProcessID = objProcess.Id;
            IsProcessRunning = true;
        }
        else
        {
            Process objProcess = Process.GetProcessById(iProcessID);
            objProcess.Kill();
            IsProcessRunning = false;
        }

        tTimer.Interval = SetTimerInterval(iInterval);
    }

次に、スタートボタンをクリックします...

    tTimer = new System.Timers.Timer();
    tTimer.Interval = SetTimerInterval(iInterval);
    tTimer.Elapsed += new System.Timers.ElapsedEventHandler(timer_Elapsed);
    tTimer.Start();

これはいつでも停止できます...

    tTimer.Stop();

そして、あなたは行く準備ができています...

于 2012-11-20T05:12:18.900 に答える