項目中有大文件傳輸需求,用戶在網頁端填好某個IP下的共享目錄,服務端通過所填路徑檢測共享目錄下的文件以供用戶選擇待傳輸的文件,
用戶勾選相應文件后點擊提交,服務端遂開始執行文件傳輸。所有的邏輯過程都在同一后台代碼中,傳文件的代碼和其他業務代碼都在同一線程中,
因而在文件過大時用戶所在頁面要等待很久很久,極大地影響用戶體驗,所以后來將傳文件的過程放在新的線程中,以便提高頁面響應效率。
將文件傳輸過程放在新線程中使用的是ThreadPool.QueueUserWorkItem()方法,調用方式是:
protected void Page_Load(object sender, EventArgs e) { List<string> fileCollection = new List<string>(); fileCollection.Add("\\\\127.0.0.1\\folder\\file1.txt"); fileCollection.Add("\\\\127.0.0.2\\folder\\file2.txt"); fileCollection.Add("\\\\127.0.0.3\\folder\\file3.txt"); string destFolder = "\\\\127.1.1.1\\destFolder"; ThreadPool.QueueUserWorkItem(state => TransmiteFile(fileCollection, destFolder)); } public void TransmiteFile(List<string> fileCollection ,string destFolder) { //...some logic }
下面來認識一下ThreadPool,先看下引用地址:線程池之ThreadPool類與輔助線程 - <第二篇>