我已經讀了一些關於編寫異步代碼,但我仍然有很多問題具體關於我的編程任務。在我的Web表單應用程序中,單擊一個按鈕時,我想在另一個類中執行一個方法,該方法執行任務(將數據插入到數據庫中),同時更新屏幕的進度。例如:c# - 異步代碼,更新方法進度到頁面
btn1_OnClick(object sender, EventArgs e)
{
//call methodA asynchronously?
}
了methodA包含在另一個類和查詢數據庫:
public class ClassA
{
public void methodA(param)
{
//insert data into database
//create string that notifies the progress of the method (should be displayed on page)
//insert more data into database
//alter string to re-notify of the progress of the method (to be displayed on page)
}
}
正如你所看到的,我想,以填補這將在的形式顯示在頁面的字符串標籤隨着方法的進展。我不知道methodA是否會返回類型「void」,但我仍然把它放在那裏。我想這個任務應該異步完成,或者可以使用Web服務。那麼我如何以編程的方式來做到這一點?
編輯
我已經看了很多文章,但似乎沒有一個有效的描述過程中我的情況。他們都只是描述當長時間運行的作業開始工作時(在這種情況下,methodA)開始或結束時顯示消息。我希望方法能夠吐出一個字符串(描述它在方法中的位置,即「插入的第一組數據」...),並隨着它的進展多次顯示它。在我的情況下,這種事情對於webforms來說太過雄心勃勃......如果我要調用一個完成所有工作並收回消息的Web服務,該怎麼辦?
關於「如何在網頁上顯示長時間運行的進度」有很多問題......考慮搜索自己,因爲它看起來不像任何人都知道好的重複。 – 2014-10-31 05:19:21
@AlexeiLevenkov請閱讀我的第一個編輯。 – frontin 2014-10-31 15:41:31
我不知道.... Myaby你應該顯示最好的「許多」文章的鏈接...我得到http://www.bing.com/search?q=c%23%20how %20to%20show%20progress%20of%20long%20running%20operation%20on%20web%20page most say say「start operation,every step should update progress in some persistent state and than poll for the progress via client script on timer」。您可以添加「長輪詢」,「websocket」或「singnalR」以搜索更快速反饋的解決方案請求。 – 2014-10-31 15:52:32