从asp.net mvc调用exe

时间:2012-11-20 04:01:42

标签: c# asp.net-mvc timer

我有一个用C#编写的应用程序。基本上它是一个exe。此应用程序以3秒的间隔扫描网络,并使用网络信息填充数据库。

我想从asp.net mvc运行这个应用程序几秒钟,然后停止它再次启动和停止。

我需要在单击开始按钮时启动exe,并且需要在单击停止按钮时停止它。 exe将一直运行,直到我调用它后点击停止按钮。

是否可以从asp.net mvc框架调用此exe文件?

如果是,怎么办?我需要一些指示。请提供给我。

1 个答案:

答案 0 :(得分: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();

你准备好了......