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

これは、ラムダまたはインラインデリゲートを使用して行うことができます。

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

ラッパークラスを使用して処理するのが、これを行うための標準的な方法です。それ以外の方法で実行できる唯一のことは、を使用しTupleて書き込みを回避すること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 に答える