.net 如何在单独的线程中运行方法
我发现了一段非常好的代码,它在单独的线程中运行所有方法。 代码如下所示.net 如何在单独的线程中运行方法,.net,c#-4.0,.net,C# 4.0,我发现了一段非常好的代码,它在单独的线程中运行所有方法。 代码如下所示 private static void Method1() { //Method1 implementation } private static void Method2() { //Method2 implementation } private static void RunMethodInSeparateThread(Action action) { var thread = new Th
private static void Method1()
{
//Method1 implementation
}
private static void Method2()
{
//Method2 implementation
}
private static void RunMethodInSeparateThread(Action action)
{
var thread = new Thread(new ThreadStart(action));
thread.Start();
}
static void Main(string[] args)
{
RunMethodInSeparateThread(Method1);
RunMethodInSeparateThread(Method2);
}
在这种情况下,我如何将参数传递给方法,并且可能存在Method1可能需要2个参数,Method2可能需要3个参数的情况。在这种情况下,如何以通用方式构造RunMethodInSeparateThread,它将接受许多参数并传递给方法。请帮我写代码。感谢您在另一个线程中运行一些代码,您可以执行以下操作:
new Thread(delegate () {
Method1(param1, param2);
}).Start();
对于需要接受可变数量参数的方法,可以接受参数集合或字典。或者您可以创建允许不同数量参数的单独方法。例如:
private static void Method1()
{
//Method1 implementation
}
private static void Method1(int Param1)
{
//Method1 implementation
}
private static void Method1(int Param1, int Param2)
{
//Method1 implementation
}
如果Method1和Method2运行时间很短,那么最好的方法是不要创建新线程。您可以改为使用.NET线程池,如下所示:
private static void Method1(int x)
{
//Method1 implementation
}
private static void Method2(int x, int y)
{
//Method2 implementation
}
public static void Main()
{
ThreadPool.QueueUserWorkItem(() => Method1(4));
ThreadPool.QueueUserWorkItem(() => Metho2(13, 7));
}
“数据槽”有用吗?请参阅.NET 4上的“线程本地存储:线程相对静态字段和数据槽”,我认为您的
RunMethodInSeparateThread
方法似乎有点多余。我会这样做:
Task.Factory.StartNew(() => { Method1(param1); });
Task.Factory.StartNew(() => { Method2(param1, param2); });
啊,忘了“状态”参数。谢谢,杰戈芬。
Task.Factory.StartNew(() => { Method1(param1); });
Task.Factory.StartNew(() => { Method2(param1, param2); });