{ -6ren">
gpt4 book ai didi

c# - 将参数传递到 Task.Factory.StartNew

转载 作者:可可西里 更新时间:2023-11-01 08:38:09 25 4
gpt4 key购买 nike

给定以下代码:

string injectedString = "Read string out of HttpContext";
Task.Factory.StartNew(() =>
{
MyClass myClass = new MyClass();
myClass.Method(injectedString);
}

这是将字符串传递到任务/线程的最佳方式吗?

我对这种方法的担忧是:

  • 垃圾收集器会知道字符串什么时候失效吗?上下文并正确清理它?
  • 有没有更好的方法将依赖项注入(inject)任务,从而打破主线程中对象的链接?

这是在 Asp.Net 网络服务中,如果它很重要并且是一个即发即忘类型的线程,我不会等待任何类型的响应。

我的字符串实际上将从 HttpContext 中读取,这是我以这种方式注入(inject)它的原因之一(线程无法访问调用线程 HtppContext )

最佳答案

您可能应该使用 Task.Factory.StartNew(Action<object> action, object state)重载以将状态传递到您的新任务中。

Task.Factory.StartNew((object myState) => {
var i = (int)myState;

//Do calculations...
var x = i + 10;
}, 10);

关于c# - 将参数传递到 Task.Factory.StartNew,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20047046/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com