ASP.NET 實現多執行緒(Mutil-Thread)

asp-net
比如,會計記錄動不動就幾萬餘記錄的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轉送,這會簡單一些。