Gul*_*llu 9 c# multithreading task pfx task-parallel-library
现在我有
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
}
Run Code Online (Sandbox Code Playgroud)
无论如何,我可以做到这一点,而无需创建类MyParamClass?如何在没有这种麻烦的情况下将多个参数传递给任务?这是标准做法吗?谢谢
您可以使用lambda或内联委托执行此操作:
myTask = new Task<bool>(() => MyMethod(xyz, abc), _cancelToken);
Run Code Online (Sandbox Code Playgroud)
使用包装类来处理是执行此操作的标准方法.你唯一能做的就是用a Tuple来避免写作MyParamClass.
mytask = new Task(myMethod, Tuple.Create(xyz, abc), _cancelToken);
mytask.Start();
bool myMethod(object passedTuple)
{
var myParamObj = passTuple as Tuple<int, string>;
}
Run Code Online (Sandbox Code Playgroud)