访问 Thread.Start() 委托函数的返回值

2023-11-21

我有一个通过 Thread.Start 执行方法的程序。该方法有一个我想访问的返回值。有没有办法做到这一点?这是一个样本...

var someValue = "";
Thread t = new Thread(delegate() { someValue = someObj.methodCall(); });

t.Start();

while (t.isAlive) Thread.Sleep(1000);

// Check the value of someValue

因此,一旦 while 循环结束,应该设置 someValue - 但因为它是在另一个线程中执行的,所以它不会被设置。有没有一种简单的方法可以访问它?


当调用者和线程方法共享一个变量时,您已经可以访问它 - 一旦线程完成,您只需检查someValue.

当然,您必须知道线程方法何时完成才能发挥作用。在底部,有两种方法可以做到这一点:

  • 将回调发送到线程方法中,该方法可以在完成时执行。您可以传递您的回调方法someValue。如果您不关心回调何时执行,则可以使用此技术。

  • Use a WaitHandle某种(或Thread.Join)。这些告诉您资源何时准备就绪或事件何时完成。如果你想启动一个线程,做其他事情,这个技术很有用,then等待线程完成后再继续。 (换句话说,如果您想与线程同步备份,它很有用,但不是立即同步。)

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

访问 Thread.Start() 委托函数的返回值 的相关文章

随机推荐

  • IE 中表格单元格内的垂直文本

    我正在尝试在跨几行的薄表格单元格中跨浏览器旋转一些文本 我希望它是行的紧凑摘要 这就是它很薄且旋转 90 度的原因 这里描述的提示 HTML 表格中的垂直 旋转 文本 工作就像一个魅力 除了在 IE 中 令人惊讶的是 其中文本被旋转 但文本
  • extern 在 C++ 中如何工作?

    这是来自
  • 我们如何将 Blockly 导入到 Angular 7 应用程序中?

    我尝试在 Angular 7 应用程序中使用 Blockly 但无法注入 Blockly 编辑器 我已经从以下位置下载了文件https developers google com blockly guides get started web
  • 尝试向 Python 类动态添加方法时遇到问题(即 django-tables2 'Table')

    因此 对于 Django 项目 我真的希望能够生成并显示表格 not基于查询集 动态地进行 无需事先了解内容或模式 它看起来像django tables2app 提供了很好的渲染表的功能 但它要求您通过在自定义定义的 Table 子类上声明
  • url 中带 www 和不带 www 的 Access-Control-Allow-Origin 问题

    我做了一个小的gwt应用程序并发布了它 但是今天我发现了一个严重的问题 我意识到同源策略问题 因此我将 gwt 应用程序和其余 json 应用程序放在同一服务器上 但显然浏览器不考虑http www xyz com and http xyz
  • 如何在Python中使用scipy.optimize中的leastsq函数来拟合数据集x和y的直线和二次线

    我如何使用 scipy optimize 中的 lesssq 函数将直线和二次拟合到下面的数据集 我知道如何使用 polyfit 来做到这一点 但我需要使用 lesssq 函数 以下是 x 和 y 数据集 x 1 0 2 5 3 5 4 0
  • 刷新 QueryTable 抛出“常规 ODBC 错误” - VBA Excel 2011 for Mac

    编辑 发现新错误 我可能刚刚发现为什么我的脚本不再起作用了 最近有一个 Office 更新 似乎他们已经实现了 microsoft 查询 它摆脱了我根据需要安装和配置的 ODBC 管理器 现在实际的问题可能是这个微软查询没有 UNICODE
  • 在R中计算加权多边形质心

    我需要根据单独的人口网格数据集计算一组空间区域的质心 感谢您在下面的示例中指导如何实现这一目标 提前致谢 require raster require spdep require maptools dat lt raster volcano
  • 如何使用 fstream 在 C++ 中追加文件? [复制]

    这个问题在这里已经有答案了 我尝试用 C 附加文件 启动时文件不存在 操作后 文件中只有一行而不是五行 此方法调用了 5 次 看起来文件正在创建 接下来每个写操作文件都被清除并添加新字符串 void storeUIDL char uidl
  • 如何使用 Enter 键作为事件处理程序 (javascript)? [复制]

    这个问题在这里已经有答案了 我试图进行自己的聊天 所以我有一个输入文本字段 提交按钮 甚至不是提交 它只是一个按钮 所以当按下回车键时 我需要的值输入字段出现在我的文本区域 只读 好吧 长话短说 我只想要一个基本的输入键事件处理程序 我知道
  • 来自另一张纸的条件格式

    我试图让工作表 A 上的一个单元格检查它是否 gt 或 A1 gt SheetB A1 但似乎不起作用 我使用绿色表示 gt 使用红色表示 是不是函数错了 或者是否不可能有条件格式甚至跨工作表搜索 由于某种原因 我承认我真的不知道为什么 条
  • 当 Ctrl+Cing 从无限循环中设置 -fbreak-on-exception 时,GHCi 挂起

    正如标题所示 我在 GHCi 中创建了一个无限循环 f x x 2 g x if f x lt x then g f x 2 else x g 2 通常按 Ctrl C 会产生 中断 并返回 GHCi 提示符 如果我 set fbreak
  • 访客模式,访客选择如何遍历

    据我了解 在Visitor模式的典型规范中 是被访问的对象决定如何遍历 而且一般只支持一种遍历顺序 参见 例如 here or here 是否有一个与双重调度相同的用途的名称 但访问者可以决定如何遍历对象层次结构 在我的应用程序中 一个非常
  • Swift 替换字符串中的第一个字符

    一个非常简单的问题 如何替换字符串的第一个字符 我可能做错了一些事情 但我就是无法让它发挥作用 我已经尝试过这个 var query url query stringByReplacingOccurrencesOfString withSt
  • Windeployqt 错过了一些库并获取了其他不需要的库

    通常要部署 Qt 项目 我要么 继续运行它并找到它抱怨丢失的库并添加它们 直到不再有为止 使用 dependency walker 完成大部分 如果不是全部 然后返回到选项 1 或者只是创建一个静态链接版本 有时会很痛苦 所以我现在想尝试w
  • 将 Python 数据结构输出到 reStructuredText 有哪些方法

    我有一个 Python 元组列表 我想将其输出到 reStructuredText 中的表中 docutils 库对将 reStructuredText 转换为其他格式有很大的支持 但我想直接从内存中的数据结构写入 reStructured
  • 为多项目中的子项目指定不同版本的 sbt?

    我有一个包含几个子项目的多项目 根项目的project build properties包含 sbt version 0 13 0 事实证明 其中一个子项目仅适用于该版本0 12 4由于依赖性问题 I put build propertie
  • “多可用区部署”和“只读副本多可用区部署”之间的区别

    Summary Amazon RDS 有两种主要不同类型的副本 多可用区副本和只读副本 很容易发现它们的区别 不过 只读副本已于 2018 年 1 月支持多可用区部署 多可用区部署 和 只读副本版本多可用区部署 之间的主要区别是什么 在当前
  • python 中的二维列表数组

    我正在尝试创建一个二维矩阵 以便每个单元格都包含一个字符串列表 矩阵尺寸在创建之前是已知的 我需要从一开始就访问任何元素 而不是动态填充矩阵 我认为需要某种预先分配空间 例如 我想要一个 2X2 矩阵 A B C d e f f 支持传统的
  • 访问 Thread.Start() 委托函数的返回值

    我有一个通过 Thread Start 执行方法的程序 该方法有一个我想访问的返回值 有没有办法做到这一点 这是一个样本 var someValue Thread t new Thread delegate someValue someOb