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 秒未満の高価なプロセス) を呼び出して、結果を List に格納しようとしています。

コールバックとロック メカニズムを使用する必要があると言われましたが、行き詰まっています。誰でも私を助けてもらえますか?パラメータ化されたスレッドを使用していますが、私が持っているものが間違っていると思います。

これについては、ここでコーディングの助けが少し必要です。以下の例をあなたの提案で変更していただければ幸いです...

ありがとうサンドラ

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;        
        }   
}
4

1 に答える 1