使用多个参数启动任务的标准做法是什么

发布于 2024-11-19 18:59:29 字数 527 浏览 2 评论 0原文

现在我有

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 吗?如何在没有这种杂技的情况下将多个参数传递给任务?这是标准做法吗?谢谢

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

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

北陌 2024-11-26 18:59:29

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

myTask = new Task<bool>(() => MyMethod(xyz, abc), _cancelToken);

You can do this with a lambda or inline delegate:

myTask = new Task<bool>(() => MyMethod(xyz, abc), _cancelToken);
咽泪装欢 2024-11-26 18:59:29

使用包装类来处理是执行此操作的标准方法。否则,您唯一可以做的就是使用 Tuple 来避免编写 MyParamClass

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

bool myMethod(object passedTuple)
{
     var myParamObj = passTuple as Tuple<int, string>;
}

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>;
}
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文