9

现在我有

class MyParamClass
{
   all the parameters I need to pass to the task
}

MyParamClass myParamObj = new MyParamClass();
myParamObj.FirstParam = xyz;
myParamObj.SecondParam = abc;
mytask = new Task<bool>(myMethod, myParamObj,_cancelToken);
mytask.Start()

bool myMethod(object passedMyParamObj)
{
   MyParamClass myParamObj = passedMyParamObj as MyParamClass;
  //phew! finally access to passed parameters
}

无论如何我可以做到这一点而无需创建类 MyParamClass 吗?如果没有这种杂耍,我如何将多个参数传递给任务?这是标准做法吗?谢谢你

4

2 回答 2

9

您可以使用 lambda 或内联委托执行此操作:

myTask = new Task<bool>(() => MyMethod(xyz, abc), _cancelToken);
于 2011-07-11T21:52:28.883 回答
6

使用包装类来处理是执行此操作的标准方法。否则你唯一能做的就是使用 aTuple来避免写作MyParamClass

mytask = new Task(myMethod, Tuple.Create(xyz, abc), _cancelToken);
mytask.Start();

bool myMethod(object passedTuple)
{
     var myParamObj = passTuple as Tuple<int, string>;
}
于 2011-07-11T21:52:55.110 回答