将 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);
我想将函数 (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);