2013-03-01 172 views
0

我是C#線程領域的新手,想要強調測試特定的服務器方法。 我想以某種方式捕獲運行該進程所需的時間並以某種方式返回。或者,如果服務器返回一條錯誤消息,當我增加併發線程數時...... 也就是說,隨着用戶數量的增加,某種衰減統計量也會出現。我在尋找的東西簡單而有效的...
我會從一個集成測試這樣調用這個過程:集成多線程測試來壓力測試服務器

[Test] 
public void StressTest_SomeExpensiveMethod_Approach() 
{ 

    int NO_THREADS = 10; 
    Thread thread = null; 
    MyClass myC = new MyClass(); 

    for (int i = 0; i < NO_THREADS; i++) 
    { 
     thread = new Thread(myC.DoExpensiveWork); 
     thread.Name = i.ToString(); 
     thread.Priority = ThreadPriority.Highest; 
     thread.Start(); 
    } 
} 

我有下面的類MyClass。這個類包含方法DoExpensiveWork()。我試圖調用DoExpensiveWork()爲指定的固定數目的線程(比如10或20,並從那裏斜升) SomeExpensiveMethod(一個昂貴的過程基本上<1秒儘管通常),然後將結果存儲在列表

我有人告訴我需要使用回調和鎖定機制,但我被卡住了。任何人都可以幫助我嗎?我使用參數化的線程,但我認爲我有什麼是錯的。

我需要一點編碼幫助,請使用這個。我將不勝感激,如果你可以用你的建議修改下面的例子...

感謝 桑德拉

public class MyClass 
{ 
     public void DoExpensiveWork() 
     { 

      ServerClass cs = new ServerClass(); 
      string testData = "sometestdata"; 

      //*** CALL TO METHOD-UNDER-TEST ***// 
      DateTime startTime = DateTime.Now; 
      IList<string> response = cs.SomeExpensiveMethod(testData); 
      DateTime endTime = DateTime.Now;   
     } 
} 

回答