重新处理旧问题:
我有一个方法可以简化我的线程,但是我遇到了多个参数传递给它的问题!
public static Thread StartThread(ParameterizedThreadStart targetMethod, object argument)
{
Thread result = null;
result = new Thread(targetMethod);
result.Start(argument);
return result;
}
有什么方法可以将一个以上的参数传递给result.Start(argument)
?或者是否有其他方法可以保持可扩展性?
任何帮助都很棒:)
谢谢〜丹尼尔
答案 0 :(得分: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();
}
答案 1 :(得分:1)
您可以将对象参数中的Tuple对象传递给StartThread
方法。另一种首选方式可能是传递某些class
或interface
的对象而不是元组。
object population = new Tuple<string, int>("a", 1);
在targetMethod
中将包含元组的强制转换对象转换回元组。
private void targetMethod(object t)
{
Tuple<string, int> t = (Tuple<string, int>)population;
string yourStringVariable = t.Item1;
int yourIntVariable = t.Item2;
}