比如,會計記錄動不動就幾萬餘記錄的Excel,從Upload -> 分析 –> SQLBluk –> 回傳結果給使用者,過程慢長除了可能HTTP Time Out,使用者也不知道結果。以前為了實現功能最後就得想出各種奇怪的方法,試過iframe 或者分開不同頁面,最少可以知道現在去哪一個步驟。
不過想再精細的結果就需使用Thread,同時它也是較好的出路。 什麼是 Thread
Thread 的用法:
Protected Sub Page_Load(sender As Object, e As System.EventArgs) Handles Me.Load
If Page.IsPostBack = False Then
Dim NewThread As Threading.Thread = New Threading.Thread(AddressOf DoSomeThing)
NewThread.Start()
End If
End Sub
Sub DoSomeThing()
For i As Integer = 1 To 100
.....
Session(“Status”) = i
Next
End Sub
就這樣Upload 完檔案,餘下的工作就交給其他Thread處理。
進度
可以使用Session, Application, Cache (Viewstate除外) 記錄進度,Client Page用jquery等方法讀取。
fucntion Status() {
$(#Status).load(status.aspx?Job=A01);
settimeout(Status,5000);
}
停止Thread
使用exit sub, return停止,由第三方停止
事先在Thread寫好停止的條件,再經Session轉送,這會簡單一些。