为了表示在线程上执行的方法,我使用
ParameterizedThreadStart
并传递方法的名称。在本例中,方法名称为 SelectJob
,实例化如下:
ParameterizedThreadStart starter = new ParameterizedThreadStart(SelectJob);
protected void SelectJob(object index)
{
...
}
为了重用部分代码,如果可能的话,我希望将方法名称存储在变量中,但 IntelliSense 将 ParameterizedThreadStart
的方法签名显示为 ParameterizedThreadStart(void ( object) target)
并且我不确定如何存储这种值。来自 MSDN我意识到这是一个委托(delegate),所以在阅读 How to: Declare, Instantiate, and Use a Delegate 后我试图声明...
delegate void Del(string str);
Del selectDelegate = SelectJob;
...但由于 SelectJob
方法不是静态的,我无法执行此操作。简单地将方法设为静态并不是一个简单的选择。
还有其他方式进行此声明吗?
谢谢!
最佳答案
在构造函数内初始化委托(delegate)实例?
public class MyClass
{
private ParameterizedThreadStart starter;
public MyClass()
{
starter = SelectJob;
Del selectDelegate = SelectJob;
}
delegate void Del(string str);
protected void SelectJob(object index)
{
}
}
关于c# - 使用委托(delegate)将方法签名传递给线程,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9585809/