私は 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;
}
}