是否可以将一种方法传递给另一种方法?

时间:2018-09-10 14:52:56

标签: c#

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

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

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);
}

1 个答案:

答案 0 :(得分:4)

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

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();
}