将 System.Func 传递给线程

pass System.Func to a Thread

我想将函数 (a) 作为参数传递给方法 (b),然后启动一个新线程来执行此函数 (a)。类似于:

Thread tr = new Thread(()=>SomeMethodWithParams(params))

但是喜欢:

public void SomeMethod(System.Func<string> SomeMethodWithParams)
{ 
   Thread tr = new Thread(SomeMethodWithParams);//how to do this right??
   tr.Start();
}

我想这样做,

 public void RunThrededJobs(Action[] actions)
{
    for(int i =0; i<actions.Length; i++)
    {
        ThreadStart x = new ThreadStart(actions[i]);
        Thread someThread = new Thread(x);
        someThread.IsBackground = true;
        someThread.Start();
    }
}

但在新线程中执行的方法中带有参数。

有几种不同的方法可以处理此问题,但我不太清楚您需要如何使用它。但是,给定 RunThrededJobs 的函数定义,您可以像这样执行它:

Action[] actions = {
    () => SomeMethodWithParams("foo"),
    () => SomeMethodWithParams("bar"),
    () => SomeMethodWithParams("baz")
};

RunThrededJobs(actions);