在循环内启动任务:如何传递可以在循环内更改的值? [复制]

2023-11-23

我正在尝试在 while 循环内使用 TPL,并且需要将一些值传递给任务,然后这些值会更改为循环。例如,这里显示了一个索引递增的示例(必须在请求创建任务的行之后):

int index = 0;
Task[] tasks;
while(/*condition*/)
{
    tasks[index] = Task.Factory.StartNew(() => DoJob(index));
    index++;
}

但它当然不起作用,因为索引值可以在任务开始之前递增。一个可能的解决方案可能是还传递一个 WaitHandle,在增加索引之前等待,并且必须将其发送到 DoJob 方法,但在我看来这并不是一个很好的解决方案。还有其他想法吗?


将值分配给循环内的临时变量:

int index = 0;
Task[] tasks;
while(/*condition*/)
{
    int value = index;
    tasks[index] = Task.Factory.StartNew(() => DoJob(value));
    index++;
}

这样每个任务都会有自己的值副本index在迭代期间有while循环调用StartNew被做了。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

在循环内启动任务:如何传递可以在循环内更改的值? [复制] 的相关文章

  • 用 C++ 进行服装建模 [关闭]

    Closed 这个问题正在寻求书籍 工具 软件库等的推荐 不满足堆栈溢出指南 help closed questions 目前不接受答案 我正在编写一些软件 最终会绘制一个人体框架 可以配置各种参数 并且计划是在假人身上放置某种衣服 我研究
  • VB.NET 相当于 C# 属性简写吗?

    是否有与 C 等效的 VB NET public string FirstName get set 我知道你能做到 Public Property name As String Get Return name ToString End Ge
  • C++ 中本地类中的静态成员变量?

    我知道我们不能宣布static本地类中的成员变量 但其原因尚不清楚 那么请问有人可以解释一下吗 另外 为什么我们不能访问非static函数内部定义的变量 内部已经定义了局部类 直接在局部类成员函数中 在下面给出的代码中 int main i
  • 将内置类型转换为向量

    我的 TcpClient 类接受vector
  • 如何从 .resx 文件条目获取注释

    资源文件中的字符串有名称 值和注释 The ResXResourceReader类让我可以访问名称和值 有办法看评论吗 你应该能够得到Comment via ResXDataNode class http msdn microsoft co
  • C++中的类查找结构体数组

    我正在尝试创建一个结构数组 它将输入字符串链接到类 如下所示 struct string command CommandPath cPath cPathLookup set an alarm AlarmCommandPath send an
  • 使用 C 语言使用 strftime() 获取缩写时区

    我看过this https stackoverflow com questions 34408909 how to get abbreviated timezone and this https stackoverflow com ques
  • 如何在 C# 中定义文本框数组?

    您好 当我在 Windows 申请表上创建文本框时 我无法将其命名为 box 0 box 1 等 我这样做的目的是因为我想循环使用它们 其实我发现TextBox array firstTextBox secondTextBox 也有效
  • 获取 WPF 控件的所有附加事件处理程序

    我正在开发一个应用程序 在其中动态分配按钮的事件 现在的问题是 我希望获取按钮单击事件的所有事件 因为我希望删除以前的处理程序 我尝试将事件处理程序设置为 null 如下所示 Button Click null 但是我收到了一个无法分配 n
  • 单击 form2 上的按钮触发 form 1 中的方法

    我对 Windows 窗体很陌生 我想知道是否可以通过单击表单 2 中的按钮来触发表单 1 中的方法 我的表格 1 有一个组合框 我的 Form 2 有一个 保存 按钮 我想要实现的是 当用户单击表单 2 中的 保存 时 我需要检查表单 1
  • 未经许可更改内存值

    我有一个二维数组 当我第一次打印数组的数据时 日期打印正确 但其他时候 array last i 的数据从 i 0 到 last 1 显然是一个逻辑错误 但我不明白原因 因为我复制并粘贴了 for 语句 那么 C 更改数据吗 I use g
  • PlaySound 可在 Visual Studio 中运行,但不能在独立 exe 中运行

    我正在尝试使用 Visual Studio 在 C 中播放 wav 文件 我将文件 my wav 放入项目目录中并使用代码 PlaySound TEXT my wav NULL SND FILENAME SND SYNC 我按下播放按钮 或
  • 如何使用 Mongodb C# 驱动程序连接多个集合

    我需要将 3 个集合与多个集合合并在一起 lookup我在 C 驱动程序中尝试过 它允许我 lookup用户采集但无法执行秒 lookup用于设置集合 有人可以帮忙吗 db Transactions aggregate lookup fro
  • 用于 C# 的 TripleDES IV?

    所以当我说这样的话 TripleDES tripledes TripleDES Create Rfc2898DeriveBytes pdb new Rfc2898DeriveBytes password plain tripledes Ke
  • 为什么在setsid()之前fork()

    Why fork before setsid 守护进程 基本上 如果我想将一个进程与其控制终端分离并使其成为进程组领导者 我使用setsid 之前没有分叉就这样做是行不通的 Why 首先 setsid 将使您的进程成为进程组的领导者 但它也
  • 如何在 C# 中调整图像大小同时保持高质量?

    我从这里找到了一篇关于图像处理的文章 http www switchonthecode com tutorials csharp tutorial image editing saving cropping and resizing htt
  • Server.MapPath - 给定的物理路径,预期的虚拟路径

    我正在使用这行代码 var files Directory GetFiles Server MapPath E ftproot sales 在文件夹中查找文件 但是我收到错误消息说 给定物理路径但虚拟路径 预期的 我对在 C 中使用 Sys
  • 如何在按钮单击时模拟按键 - Unity

    我对 Unity 中的脚本编写非常陌生 我正在尝试创建一个按钮 一旦单击它就需要模拟按下 F 键 要拾取一个项目 这是我当前的代码 在编写此代码之前我浏览了所有统一论坛 但找不到任何有效的东西 Code using System Colle
  • 有没有办法强制显示工具提示?

    我有一个验证字段的方法 如果无法验证 该字段将被清除并标记为红色 我还希望在框上方弹出一个工具提示 并向用户显示该值无效的消息 有没有办法做到这一点 并且可以控制工具提示显示的时间 我怎样才能让它自己弹出而不是鼠标悬停时弹出 If the
  • 防止在工厂方法之外实例化对象

    假设我有一个带有工厂方法的类 class A public static A newA Some code logging return new A 是否可以使用 a 来阻止此类对象的实例化new 那么工厂方法是创建对象实例的唯一方法吗 当

随机推荐

  • 使用 spring 控制器和不同的类在 jsp 中渲染数据

    我想渲染数据 this is how my jsp page table look like 我如何实现这一目标 请帮我 这给我带来了很多困惑 要定义多少个类以及哪些字段 thanks 您的数据很可能来自数据库 这是一种List返回了 ja
  • VSCode Marketplace 扩展:ZIP 损坏:未找到中央目录记录签名末尾

    我正在尝试安装从 Marketplace 下载的 VSIX 包wget在安装了 VSCode 服务器的 Linux VM 上 但出现以下错误 wget nv https marketplace visualstudio com apis p
  • Re.sub 不适合我

    我想得到re sub例如替换用值指定的模式 for lines in f pattern 2 key 0 2 re search pattern lines 这将返回找到模式的行 例如 这是测试返回之一 这是一个 测试 我遇到的问题是当我执
  • 使用 PHP 检查远程文件是否为格式良好的 XML

    我有一个 PHP 驱动的网站 其中包含 XML 库存提要 该提要由 ASP 远程提供 即 XML 提要 url 的顺序为 http remote com client asp 由于提要经常不可用 我的意思是网站返回 ASP 错误 我想在包含
  • memcpy 与 C 中的赋值——应该是 memmove?

    正如指出的这个问题的答案 编译器 在本例中是 gcc 4 1 2 是的 它很旧 不 我无法更改它 可以在它认为合适的地方用 memcpy 替换结构体赋值 我正在 valgrind 下运行一些代码 并收到有关 memcpy 源 目标重叠的警告
  • 在Java中,为什么超类方法不能从子类实例访问受保护或私有方法/变量?

    让我们从另一种行为开始 即使您将方法 变量声明为私有 同一类的另一个实例也可以访问它 没关系 我可以忍受 我将这些称为类私有而不是实例私有 现在问题部分 例如 在运行时我希望能够检查所有字符串变量thisclass 不为 null 如果为
  • junit 3 中的类拆解?

    我们有很多使用 JUnit 编写的集成测试3 尽管我们现在运行它们4 4 其中一些需要在类中的所有测试完成后运行的tearDown 方法 以释放一些公共资源 我发现这可以在 junit 4 中使用 AfterClass org junit
  • 在 SQL 中将列转换为行[重复]

    这个问题在这里已经有答案了 我需要编写一个查询 该查询获取行并将其转换为列 这是我的表 Count fname lname id 1 abc def 20 2 pqr 20 3 abc xyz 20 4 xyz xyz 20 1 abc d
  • git 的耐心差异算法的实现是否正确?

    Stackoverflow 上的这个问题似乎是应用耐心差异算法的良好候选者 然而 在测试我的潜在答案时 我发现git diff patience没有达到我的预期 并且在这种情况下 与默认的 diff 算法没有什么不同 cat a Funct
  • Android 中如何检查数据库是否存在?

    我正在使用 Room API 在我的 Android 应用程序中实现数据库 似乎每次我加载应用程序时 它都会尝试一次又一次地创建数据库 有什么办法可以限制这个吗 db Room databaseBuilder context AppData
  • 在Android中启用MultiDex支持以在Eclipse中实现65K+方法

    我正在尝试在 eclipse 中构建 Multidex apk 但未能成功 我尝试了以下步骤 在 Android 应用程序中配置 Multidex 支持 我已将位于 extras android support multidex 的 Mul
  • 带有滚动视图的 Android 操作栏选项卡在方向更改后复制了视图

    我有一个非常简单的代码 我将操作栏与选项卡片段一起使用 加载后它工作正常 但方向改变后它会变得疯狂 旧片段也可见 为什么 Sorry for Hungarian texts on the image but I hope it doesn
  • 当浏览器以角度关闭时清除本地存储

    我创建了一个 Angular 5 应用程序 它使用基于令牌的系统 当前我将令牌存储在本地存储中 我希望本地存储在浏览器关闭时保持清晰 并且在浏览器刷新时不清除本地存储 我没有使用sessionstorage的原因是因为在新选项卡或窗口中打开
  • 将第一行与数据框中的列标题合并

    我正在尝试清理 Excel 文件以进行进一步的研究 我遇到的问题是 我想合并第一行和第二行 我现在拥有的代码 xl pd ExcelFile nanonose xls df xl parse Sheet1 df df drop Unname
  • 浏览器滚动条移位

    当您转到我的网站上有额外内容的页面时 滚动条出现在右侧 但我的内容有明显的向左移动 您可以通过单击主页 托管并再次返回我的网站 www ipalaces org 来注意到这一点 如何解释页面上的浏览器滚动条 我可以让滚动条至少始终可见吗 我
  • 调试 ASP.NET Core 时看不到值

    使用 Visual Studio 2015 调试 ASP NET Core 应用程序时 我无法看到变量 参数和字段值 例如 将鼠标悬停在这些值上 我也无法将它们添加到手表中 我正在调试中运行 我们可能已经找到了问题的解决方案 或至少是解决方
  • 如何将对象转换为其实际类型?

    如果我有 void MyMethod Object obj 我怎样才能投obj它的实际类型是什么 如果您知道实际类型 那么只需 SomeType typed SomeType obj typed MyFunction 如果您不知道实际类型
  • 使用 tkinter 制作简单动画

    我有一个简单的代码来使用 tkinter 可视化一些数据 按钮单击绑定到重绘下一个数据 帧 的函数 但是 我希望能够选择以一定的频率自动重绘 我对 GUI 编程非常陌生 我不需要为这段代码做很多事情 所以我的大部分 tkinter 知识都来
  • 为什么 Apache Flink 需要 Watermarks 进行事件时间处理?

    有人可以正确解释事件时间戳和水印吗 我从文档中理解了它 但不是那么清楚 现实生活中的例子或外行定义会有所帮助 另外 如果可能的话请给出一个示例 以及一些可以解释它的代码片段 提前致谢 这是一个示例 说明了为什么我们需要水印以及它们的工作原理
  • 在循环内启动任务:如何传递可以在循环内更改的值? [复制]

    这个问题在这里已经有答案了 我正在尝试在 while 循环内使用 TPL 并且需要将一些值传递给任务 然后这些值会更改为循环 例如 这里显示了一个索引递增的示例 必须在请求创建任务的行之后 int index 0 Task tasks wh