【问题标题】:Is it possible to pass a method to another method? [duplicate]是否可以将一个方法传递给另一个方法? [复制]
【发布时间】:2019-02-15 01:05:39
【问题描述】:

我想要一个可以传递另一个方法(不带任何参数)的方法。
在那个方法中,会有一个线程来调用传递的方法。

不太确定如何实现,但整个想法是这样的:

private static void Main(string[] args)
{
    MethodStarter(Greet)
}

void MethodStarter(Method method)
{
    ThreadStart starter = method;

    _thread = new Thread(starter) { IsBackground = true };
    _thread.Start();
}

void Greet()
{
    ThreadPool.QueueUserWorkItem(new WaitCallback(SendAMessage), "Hello World");            
    Thread.Sleep(5000);

    ThreadPool.QueueUserWorkItem(new WaitCallback(SendAMessage), "How are you today?");         
    Thread.Sleep(5000);
}

void SendAMessage(object arg)
{
    Console.WriteLine(arg as string);
}

【问题讨论】:

标签: c#


【解决方案1】:

实际上,您回答了问题中的问题。看看这一行:

ThreadStart starter = method;

您将method 分配给ThreadStart 类型的变量,因此method 也应该是ThreadStart 类型:

void MethodStarter(ThreadStart method)
{
    // you don't actually need this line, just pass "method" directly
    // ThreadStart starter = method;

    _thread = new Thread(method) { IsBackground = true };
    _thread.Start();
}

【讨论】:

  • 这很有帮助。谢谢你:)
  • 加 1 以提供“真实”答案:)
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2016-12-21
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-09-14
  • 2014-01-05
相关资源
最近更新 更多