【发布时间】:2016-08-30 07:44:16
【问题描述】:
我的任务有问题。当我尝试从任务中接收返回的变量时,我无法使用 .Result 属性来获取它。这是我的代码:
var nextElement = dir.GetValue(i++).ToString();
Task buffering = Task<byte[]>.Run(() => imageHashing(nextElement));
bitmapBuffer = buffering.Result;
imageHasing 函数声明如下:public bool[] imageHashing(string path)
我收到一条错误消息:
严重性代码描述项目文件行抑制状态 错误 CS1061“任务”不包含“结果”的定义并且没有 扩展方法“结果”接受“任务”类型的第一个参数 可以找到(您是否缺少 using 指令或程序集 参考?)
来自this microsoft website 的示例有效,我不明白为什么。
【问题讨论】:
-
好吧,好消息,因为您在这里使用 Task 完全没有意义。您正在阻塞当前线程,因此您可以直接调用 imageHashing 并跳过 Task.Run。
-
您需要将其声明为
Task<byte[]>。有关说明,请参阅this question。 -
或者改用var
-
我的意思是这并非完全没有意义,它增加了生成线程池线程然后使用它的额外开销,因此它使您的代码很多效率降低跨度>