近來有一個html頁面,內容基本如下:
<html><head><meta http-equiv="Content-Type" contect="text/html" charset="utf-8"></head><form method="POST" action="/hello">姓名:<textarea name="name" cols="60" rows="10"></textarea><input type=submit name=submit value="OK"><br>請選擇類型:<input type="radio" name="type" value="1" checked> 類型1<input type="radio" name="type" value="2" > 類型2<input type="radio" name="type" value="3" > 類型3<input type="radio" name="type" value="4" > 類型4<input type="radio" name="type" value="5" > 類型5<input type="radio" name="type" value="6" > 類型6</form></html>
為了測試使用者點擊該頁面submit按鈕,背景程式的處理結果和反應速度,故研究測試相關內容。
*****以下內容暫時和以上內容無關*****
今天先寫C#的多線程相關。
首現引入using System.Threading;
為了記錄日誌,再引入
using log4net;
using System.Web;
[assembly: log4net.Config.XmlConfigurator(Watch = true)]
在程式中,執行個體化
static ILog log = log4net.LogManager.GetLogger("Log4Net.ProLogThread1");
接下來有兩個步驟,定義工作函數和多線程調用工作函數。
我們的工作函數:
static void doWork(object data) { Console.WriteLine("Static thread procedure. Data='{0}'", data); log.Info(data); }
注意:參數是object形式,對參數的處理操作是在控制台列印和寫入記錄檔。
多線程調用函數:
static void testDoWork() { try { using (StreamReader sr = new StreamReader("E:\\ThreadTest\\text.txt")) { String line; while ((line = sr.ReadLine()) != null) { Thread newThread = new Thread(doWork); newThread.Start(line); } } } catch (Exception e) { Console.WriteLine("The file could not be read:"); Console.WriteLine(e.Message); } }
注意:Thread類的建構函式的參數是函數名稱,然後在其執行個體對象調用Start方法,並傳入參數。
最後,在主函數Main裡面調用testDoWork函數即可運行程式。
問題:
1、在控制台列印了日誌的內容,不知為什嗎?
2、文本的處理順序不完全是按照原來文本的順序,不知道線程是否做了最佳化?
3、囫圇吞棗,還是有很多細節需要細細研究。