【发布时间】:2017-11-18 15:46:41
【问题描述】:
这一行
success = await _myHid.SendOutputReportViaInterruptTransfer(_deviceData, _hidHandle, outputReportBuffer);
给我这个错误错误
“await”运算符只能在异步方法中使用。考虑使用“异步”修饰符标记此方法并将其返回类型更改为“任务”。 S:\blissbox\SOURCE_FILES\Bliss-Box_api\托管 dx 尝试\BBAPI.cs 40
这是我的方法。
internal async Task<Boolean> SendOutputReportViaInterruptTransfer
(FileStream fileStreamDeviceData, SafeFileHandle hidHandle, Byte[] outputReportBuffer)
{
try
{
var success = false;
// Begin writing the Output report.
Task t = fileStreamDeviceData.WriteAsync(outputReportBuffer, 0, outputReportBuffer.Length);
await t;
// Gets to here only if the write operation completed before a timeout.
Debug.Print("Asynchronous write completed");
// The operation has one of these completion states:
switch (t.Status)
{
case TaskStatus.RanToCompletion:
success = true;
Debug.Print("Output report written to device");
break;
case TaskStatus.Canceled:
Debug.Print("Task canceled");
break;
case TaskStatus.Faulted:
Debug.Print("Unhandled exception");
break;
}
return success;
}
catch (Exception ex)
{
DisplayException(ModuleName, ex);
throw;
}
}
我做错了什么?
【问题讨论】:
-
编译器要求您创建用于调用
SendOutputReportViaInterruptTransferasync的方法。 -
当你在你的项目中引入
async时,你需要让async一直向上。换句话说,如果没有将调用封装在像Task.Run(async() => { ... });这样的任务中,您需要将所有调用函数async,以及所有这些调用函数的调用函数async,一路向上。
标签: c# async-await