我对某些委托的行为方式有点弱,例如将方法作为要调用的参数传递。在尝试做一些 NUnit 测试脚本时,我需要一些东西来运行许多测试。这些测试中的每一个都需要创建一个 GUI,因此需要一个 STA 线程。所以,我有类似的东西
public class MyTest
{
// the Delegate "ThreadStart" is part of the System.Threading namespace and is defined as
// public delegate void ThreadStart();
protected void Start_STA_Thread(ThreadStart whichMethod)
{
Thread thread = new Thread(whichMethod);
thread.SetApartmentState(ApartmentState.STA); //Set the thread to STA
thread.Start();
thread.Join();
}
[Test]
public void Test101()
{
// Since the thread issues an INVOKE of a method, I'm having it call the
// corresponding "FromSTAThread" method, such as
Start_STA_Thread( Test101FromSTAThread );
}
protected void Test101FromSTAThread()
{
MySTA_RequiredClass oTmp = new MySTA_RequiredClass();
Assert.IsTrue( oTmp.DoSomething() );
}
}
这部分一切正常......现在下一步。我现在有一组不同的测试,它们也需要一个 STA 线程。但是,我需要做的每个“事情”都需要两个参数......两个字符串(对于这种情况)。
我该如何声明正确的委托,以便我可以传入我需要调用的方法,以及一次性传递两个字符串参数......我可能有 20 多个测试要在这种模式下运行,并且可能会有其他类似的未来也使用不同的参数计数和参数类型进行测试。
谢谢。