首页 > 作文

.NET提取 Thread 中返回值详情

更新时间:2023-04-04 10:58:28 阅读: 评论:0

目录
一、.net 2.0+二、.net 4.0 +三、.net 4.5 +

以下文章来源于公众号dotnetcore实战

igor bendrup:

关于如何获取 thread 中的返回值,不同的版本有不同的解决方案。

一、.net 2.0+

你可以直接使用 thread 对象,然后你可以使用闭包(声明变量并在 lambda 中捕获它),参考如下代码:

object result = null;thread thread = new system.threading.thread(() => {  //some work...  result = 42; });thread.start();thread.join();console.writeline(result);

也可以使用 iasyncresult 然后在endinvoke() 方法中获取返回值。

backgroundworker worker = new backgroundworker();worker.dowork += (s, e) => {  //some work...  e.result = 42;};worker.runworkercompleted += (s, e) => {  //e.result "retur固然造句ned" from thread  console.writeline(e.result);}英语句型结构;worker.runworke爱情童话rasync();
backgroundworker worker = new backgroundworker();worker.dowork += (s, e) => {  //some work...  e.result = 42;};worker.runworkercompleted += (s, e) => {  //e.result "returned" from thread  console.writeline(e.result);};worker.runworkerasync();

还可以使用传统的 backgroundworker,然后在 runworkercompleted 事件中捕获。

二、.net 4.0 +

从 .net 4.0 开始,你可以通过 task 的方式开启 thread,如果想获取返回值可以提取 task 中的 result

如下代码:

//main thread will be blocked until task thread finishes//(becau of obtaining the value of the result property)int result = task.factory.startnew(() => {  //some work...  return 42;}).result;

三、.net 4.5 +

从 .net 4.5 开始, 你可以使用 await,async 的方式替代 task result 属性,参考如下中长篇笑话代码:

int result = await task.run(() => {  //s苏酒应用门户ome work...  return 42; });

建议:用 task 来替代传统 thread 所做的事情。

到此这篇关于.net提取 thread 中返回值详情的文章就介绍到这了,更多相关.net提取 thread 中返回值内容请搜索www.887551.com以前的文章或继续浏览下面的相关文章希望大家以后多多支持www.887551.com!

本文发布于:2023-04-04 10:58:26,感谢您对本站的认可!

本文链接:https://www.wtabcd.cn/fanwen/zuowen/eb217f2a7740f519725eb30bcd231437.html

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。

本文word下载地址:.NET提取 Thread 中返回值详情.doc

本文 PDF 下载地址:.NET提取 Thread 中返回值详情.pdf

标签:你可以   返回值   代码   文章
相关文章
留言与评论(共有 0 条评论)
   
验证码:
Copyright ©2019-2022 Comsenz Inc.Powered by © 专利检索| 网站地图