【问题标题】:Syntax error when trying to await "(awaitable) Windows.Foundation.IAsyncOperation"尝试等待“(等待)Windows.Foundation.IAsyncOperation”时出现语法错误
【发布时间】:2014-02-15 22:09:13
【问题描述】:

我从 Visual Studio 收到一条非常令人困惑的错误消息,告诉我不能在标记为“(awaitable)”的方法上使用“await”。这是完整的消息:

错误 1 ​​'await' 运算符只能在异步方法中使用。考虑使用 'async' 修饰符标记此方法并将其返回类型更改为 'Task<Windows.Phone.Media.Capture.AudioVideoCaptureDevice>'

这是我的代码:

    private AudioVideoCaptureDevice SetupController()
    {
        CameraSensorLocation Location = CameraSensorLocation.Back;
        AudioVideoCaptureDevice CameraController = await AudioVideoCaptureDevice.OpenAsync(Location, AudioVideoCaptureDevice.GetAvailableCaptureResolutions(Location).First());

        CameraController.SetProperty(KnownCameraAudioVideoProperties.VideoTorchMode, VideoTorchMode.On);

        return CameraController;
    }

错误在于这一行:

AudioVideoCaptureDevice CameraController = await AudioVideoCaptureDevice.OpenAsync(Location, AudioVideoCaptureDevice.GetAvailableCaptureResolutions(Location).First());

【问题讨论】:

  • 这并不是告诉你不能使用await onasync 方法;它告诉您不能使用await inasync 方法。它在抱怨SetupController,而不是OpenAsync
  • 是的,我现在开始工作了。谢谢!

标签: c# .net windows asynchronous windows-phone-8


【解决方案1】:

当您使用 await - 您必须在支持异步操作的方法中使用它。当您返回一个值时 - 将其设为 Task<>

尝试让你的方法异步:

private async Task<AudioVideoCaptureDevice> SetupController()
{
  // your code
}

因为它现在是异步的,所以使用它:

AudioVideoCaptureDevice myDevice = await SetupController(); // which should also be run from async method

【讨论】:

猜你喜欢
  • 2021-09-18
  • 2020-04-22
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-10-27
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多