2015-12-02 96 views
0

我有很長的代碼,需要在用戶按下特定按鈕時執行。''隱藏''OnClick事件代碼執行

protected void Post(object sender, EventArgs e) 
{ 
    //1) Code that processes submitted data 
    //2) Passess the processed data to SQL DB 
    //3) Receives data from DB 
    //4) Generates PDF 
    //5) Sends the PDF To User 

    Response.Redirect("~/SomePage.aspx"); 
} 

但是,代碼,需要大約6秒來執行,這是一個相當長的時間,雖然這個代碼執行時,什麼也沒發生在屏幕上,只重定向這事件發生後(1-5 )已成功完成。

我想知道的是,如果它以某種方式儘快將用戶重定向到所需的站點並在後臺處理數據?

如果是,我需要使用什麼?

預先感謝您。

+0

在用戶點擊客戶端按鈕時顯示的頁面上添加一個加載圖片。這種方法更容易,用戶知道發生了什麼事情,他需要有點耐心。 –

+0

您可以創建一個後臺任務,並在那裏開始處理並在同一秒內重定向用戶。只有當你不想遵循@TimSchmelter建議的內容 –

+0

如何在第2步完成後創建一個線程,讓其他步驟3,4,5通過後臺進程完成,或者@TimSchmelter建議添加加載/處理圖像。 – Prabhat

回答

3

您可以在插入所有必要數據作爲頁面參數時轉到下一頁。然後,您可以在該頁面上開始您的流程。該方法可以在另一個線程工作(見Tasks/BackgroundWorker

  • PRO:用戶是在正確的頁面立刻被重新導向
  • CON:需要告訴操作成功與否的用戶額外的代碼,你會如果進程失敗會發生?

你也可以用等待GIF和文字說明的過程工作正在緊張運行,並在過程結束時仍然要在新頁面(在幾個Web應用程序銀行等使用...)

  • PRO:在具有錯誤時,用戶可以通過點擊按鈕代替重新進入形式的重複的過程值
  • (來自TimSchmelter)爲程序員更少的工作/客戶端較少費用;更直觀的
  • CON:用戶不是即時重定向
+0

@TimSchmelter,編輯完成 – Schuere

+0

謝謝您的建議,一定會檢查出來。 – OverflowStack

+0

另一個PRO:爲開發者簡單地添加一個加載gif並且對用戶直觀而言便宜得多。考慮到用戶在完成該過程之前不知道該在其他頁面上做什麼。 –

0
Thread obj = new Thread(
new ThreadStart(new ThreadStart(() => VoidFuncName(...parameters....))); 
obj.IsBackground = true; 
obj.Start(); 
Response.Redirect("~/someaspxsite.aspx"); 

這是我用過的東西。它創建了一個執行代碼的新線程。作品完美無瑕。