是否可以将一个方法传递给另一个方法? [复制]

Posted

技术标签:

【中文标题】是否可以将一个方法传递给另一个方法? [复制]【英文标题】: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);

【问题讨论】:

看看“代表”。然后“Action”可能也很有趣。 你可以使用docs.microsoft.com/en-us/dotnet/api/… 【参考方案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 以提供“真实”答案:)

以上是关于是否可以将一个方法传递给另一个方法? [复制]的主要内容,如果未能解决你的问题,请参考以下文章

如何将数组传递给另一个活动?

将 UI Thread 方法传递给另一个线程以在 C# 中调用

将二维数组传递给另一个类 C++

C# .NET 4,如何将任务完成结果传递给另一个方法?

将arraylist传递给另一个类以检查可用性及其过期日期的方法

使用 Parse 方法 getObjectInBackgroundWithId 将 objectId 从 viewDidLoad 传递给另一个函数不起作用