c# - 使用委托(delegate)将方法签名传递给线程

标签 c# multithreading delegates

为了表示在线程上执行的方法,我使用 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/

相关文章:

c# - .NET 中是否可以使用 C# 实现基于事件的异步模式而无需多线程?

c# - 自动递增 C# 容器 ID

c# - WPF中的动画GIF问题

c# - ASP.NET Core 在默认域 (*.azurewebsites.net) 上跨 Azure Web 应用程序共享身份 Cookie

c# - Asp.Net - 使用 CacheUpdateCallback 的缓存的绝对到期时间是否可以小于 20 秒?

c# - 是否可以同步调用异步调用?

ios - SKProductsRequestDelegate 方法未在类内调用

c# - StringBuilder 是否比 String 连接使用更多的内存?

python - 在 tkinter 中同时运行两个脚本

linux - 在GDB中调试多线程程序时如何一次继续一个线程?