У меня проблема с приложением Windows Forms, которое я создаю.Приложение должно быть приложением для тестирования интеграции.По сути, он должен проверить методы, которые используют множество веб-служб в одном из моих классов.Я загружаю методы из класса, который я хочу проверить с помощью отражения, и делаю это так:
private List<string> GetMethods(Type type)
{
return (from method in type.GetMethods() where method.IsPublic &&
method.ReturnType == typeof(void) select method.Name).ToList();
}
Возвращает список методов из этого класса, которые были созданы для тестирования веб-сервисов.и помещает их в ListBox, где пользователь может выбрать столько методов, сколько ему нравится.Мое замешательство приходит сюда.То, что я хотел бы сделать, это получить методы, выбранные пользователем, и выполнить соответствующий метод X количество раз (есть текстовое поле для ввода количества раз, чтобы выполнить метод также в форме).Я не могу понять, как выполнить эти методы, основываясь на названии метода, который я получил путем отражения.Я пробовал что-то подобное, но я знаю, что это неправильно:
private void RunMethods(Type type)
{
var tester = new ClassToTest();
foreach(var item in lstMethodList.SelectedItems)
{
foreach(var method in type.GetMethods())
{
if(String.Equals(item.ToString(), method.Name))
{
ThreadStart ts = new ThreadStart(method.Name);
Thread thread1 = new Thread(ts);
thread1.Start();
}
}
}
}
Это даже не скомпилируется, поскольку ThreadStart требует имя метода в качестве параметра.Есть ли способ, которым это возможно сделать?Возможно, я логически ошибаюсь, но я бы хотел создать поток для каждого метода, который нужно запустить, и выполнить этот метод, сколько бы раз пользователь не указал.Предполагается, что это будет способ проведения интеграционного тестирования с некоторым нагрузочным тестированием, чтобы увидеть, что может обработать веб-служба.