以下文章来源于公众号dotnetcore实战
igor bendrup:
关于如何获取 thread
中的返回值,不同的版本有不同的解决方案。
你可以直接使用 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 开始,你可以通过 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 开始, 你可以使用 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 条评论) |