Right now I have
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
}
Is there anyway I can do this without having the need to create class MyParamClass ? How can I pass multiple params to a task without this jugglery ? Is this the standard practice ? thank you
You can do this with a lambda or inline delegate:
myTask = new Task<bool>(() => MyMethod(xyz, abc), _cancelToken);
Using a wrapper class to handle is the standard way to do this. The only thing you can do otherwise is use a Tuple
to avoid writing MyParamClass
.
mytask = new Task(myMethod, Tuple.Create(xyz, abc), _cancelToken);
mytask.Start();
bool myMethod(object passedTuple)
{
var myParamObj = passTuple as Tuple<int, string>;
}
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With