2011-04-05 59 views
0

我在ASP.NET中開發了一個網頁 - 頁面上有一個按鈕,可以在點擊時啓動一個DOS程序。C#如何殺死startet進程?

這裏是代碼:

if (!String.IsNullOrEmpty(endTime)) 
{ 
    Process p = new Process(); 
    p.StartInfo.WorkingDirectory = Server.MapPath("~/"); 
    p.StartInfo.FileName = Server.MapPath(apiFile); 

    try 
    { 
     p.Start(); 
    } 
    catch 
    { 
     throw new Exception(
      "Requested process (" + p.StartInfo.FileName + ") could not be started. Page: Api.aspx.cs, Method: UploadBtn_Click()"); 
    } 

    System.Threading.Thread.Sleep(5000); 

    Response.Redirect(Request.Url.ToString()); 
} 

的代碼工作正常,開始進行處理。

現在的問題:

我按一下按鈕,並開始(我認爲這在數據庫中)和程序工作正常,但是,我現在要停止的過程中,但不知道如何。

沒有一個DOS窗口,我可以點擊「CTRL + C」或其他東西。

我該怎麼辦才能停止該過程?

哪位用戶用於啓動進程?

+1

優秀 - 這是公衆面臨的?你能給我一個網址嗎?我很樂意嘗試一下:D – 2011-04-05 11:27:30

回答

6

只需使用Process.Kill

p.Kill(); 

UPDATE:
因爲你的意見,我提供這作爲一種替代方案:
殺死一個進程無碼,使用任務管理器(開它通過使用CTRL + SHIFT + ESC或CTRL + ALT + DEL->任務管理器),導航到「進程」選項卡,選擇「顯示所有用戶的進程」,選擇你的進程,然後單擊「結束進程」...

+0

您需要保留對進程的引用,以便在需要殺死進程時訪問它。 – ChrisF 2011-04-05 11:27:14

+0

我不能因爲我從網站開始流程,而不是從視覺工作室開始。 – Alexo 2011-04-05 11:27:15

+0

對於說明:我不搜索方法來停止流程。我點擊按鈕上的Live。流程開始......我不知道要殺死這個流程......我不需要一個代碼,但有一個解決方案來停止Live流程知道! :) – Alexo 2011-04-05 11:33:32

0

您可以將Process對象作爲字段存儲在頁面類下,並用另一個按鈕調用.Kill at。但是在這種情況下,您將只能託管一個進程,並應該考慮使其安全運行的方法。