我的任务有问题。当我尝试从我的任务中恢复返回的变量时,我无法使用.Result属性来获取它。这是我的代码:
var nextElement = dir.GetValue(i++).ToString();
Task buffering = Task<byte[]>.Run(() => imageHashing(nextElement));
bitmapBuffer = buffering.Result;
和imageHasing函数声明如下:public bool[] imageHashing(string path)
我收到错误消息:
严重级代码描述项目文件行抑制状态 错误CS1061&#39;任务&#39;不包含&#39;结果&#39;的定义和不 扩展方法&#39;结果&#39;接受类型&#39;任务&#39;的第一个参数。 可以找到(你错过了使用指令或程序集 引用?)
this microsoft website的示例有效,我无法理解原因。
答案 0 :(得分:3)
正如其他人所说,编译器错误在您的变量声明中(Task
没有Result
属性):
var nextElement = dir.GetValue(i++).ToString();
var buffering = Task.Run(() => imageHashing(nextElement));
bitmapBuffer = buffering.Result;
但是,此代码也存在问题。特别是,如果您只是阻止当前线程直到完成,那么将工作转移到后台线程是没有意义的。您也可以直接调用该方法:
var nextElement = dir.GetValue(i++).ToString();
bitmapBuffer = imageHashing(nextElement);
或者,如果您在UI线程上并且不想阻止UI,那么请使用await
而不是Result
:
var nextElement = dir.GetValue(i++).ToString();
bitmapBuffer = await Task.Run(() => imageHashing(nextElement));