C# 使用委托将方法签名传递给线程
为了表示在线程上执行的方法,我使用C# 使用委托将方法签名传递给线程,c#,multithreading,delegates,C#,Multithreading,Delegates,为了表示在线程上执行的方法,我使用 ParameterizedThreadStart并传递方法的名称。在这种情况下,方法名称为SelectJob,实例化如下: ParameterizedThreadStart starter = new ParameterizedThreadStart(SelectJob); protected void SelectJob(object index) { ... } 为了重用部分代码,如果可能的话,我希望将方法名存储在变量中,但是IntelliS
ParameterizedThreadStart
并传递方法的名称。在这种情况下,方法名称为SelectJob
,实例化如下:
ParameterizedThreadStart starter = new ParameterizedThreadStart(SelectJob);
protected void SelectJob(object index)
{
...
}
为了重用部分代码,如果可能的话,我希望将方法名存储在变量中,但是IntelliSense将ParameterizedThreadStart
的方法签名显示为ParameterizedThreadStart(void(object)target)
,我不确定如何存储这种值。从我意识到这是一个委托,所以在阅读后我试图声明
delegate void Del(string str);
Del selectDelegate = SelectJob;
。。。但是由于SelectJob
方法不是静态的,所以我无法做到这一点。简单地将方法设置为静态并不是一个容易的选择
有没有其他方式来做这个声明
谢谢 在构造函数中初始化委托实例
public class MyClass
{
private ParameterizedThreadStart starter;
public MyClass()
{
starter = SelectJob;
Del selectDelegate = SelectJob;
}
delegate void Del(string str);
protected void SelectJob(object index)
{
}
}
您可以将其分配给构造函数中的操作字段:
class Boo
{
public Boo()
{
_myDelegate = SelectJob;
}
Action<object> _myDelegate ;
protected void SelectJob(object index)
{
}
}
类Boo
{
公共广播
{
_myDelegate=SelectJob;
}
行动——我的代表;
受保护的void SelectJob(对象索引)
{
}
}
或者,使用始终返回委托的方法:
class Hoo
{
protected Action<object> SelectJobDelegate(object index)
{
return o =>
{
// do something with o
};
}
}
class-Hoo
{
受保护的操作SelectJobDelegate(对象索引)
{
返回o=>
{
//用o做点什么
};
}
}
谢谢。我很少研究委托的使用,虽然在概念上并不困难,但我常常难以正确地实例化它们。谢谢你的帮助!