1

重做一个老问题:

我有一种方法可以大大简化我的线程,但是我在向它传递多个参数时遇到了问题!

public static Thread StartThread(ParameterizedThreadStart targetMethod, object argument)
{
            Thread result = null;

            result = new Thread(targetMethod);

            result.Start(argument);
            return result;
} 

有什么办法可以将多个参数传递给result.Start(argument)? 还是有其他方法可以在保持可扩展性的同时做到这一点?

任何帮助都是极好的 :)

谢谢~丹尼尔

4

2 回答 2

2

这很简单

static void targetMethod(object obj)
{
    Tuple<string, int> tuple = (Tuple<string, int>)obj;
    Console.WriteLine(tuple.Item1);
    Console.WriteLine(tuple.Item2);
}

static void Main(string[] args)
{
    Thread thread = new Thread(targetMethod);
    thread.Start(new Tuple<string, int>("simple string", 123));
    thread.Join();
    Console.ReadLine();
}
于 2013-10-02T05:26:59.423 回答
1

您可以将对象参数中的元组StartThread对象传递给方法。另一种首选方式可能是传递一些对象classinterface代替元组。

object population = new Tuple<string, int>("a", 1);

将包含元组的对象类型转换回 tuple in targetMethod

private void  targetMethod(object t)
{
    Tuple<string, int> t = (Tuple<string, int>)population;
    string yourStringVariable = t.Item1;  
    int yourIntVariable = t.Item2;
}
于 2013-10-02T05:27:25.167 回答