繁体   English   中英

Win8 C#异步/等待问题

[英]Win8 C# trouble with async/await

为什么在第二种情况下会引发异常?

async void f() {
    await media.InitializeAsync();
    isInit = true;
    capturePreview.Source = media;
    await media.StartPreviewAsync(); // Ok
}

// ------------------------------------------

void f() {
    StaticClass.g(capturePreview.Source);
}

public static class StaticClass {
    public static async void g(MediaSource source) {
        await media.InitializeAsync();
        isInit = true;
        source = media;
        await media.StartPreviewAsync(); // Unknown Exception (It's seems that media isn't init)
    }
}

f()函数使用包含async的函数。 所以我认为f()应该被async签名。 像这样: void async f(){...}

如果您确实要初始化媒体,为什么不执行.done函数中的其余代码?

 void f() {
     StaticClass.g(capturePreview.Source);
    }

  public static class StaticClass {
     public static async void g(MediaSource source) {
       media.InitializeAsync().done(
       isInit = true;
       source = media;
       await media.StartPreviewAsync(););
     }
  }

即使我不确定,您也可以在完成的回调中进行异步处理。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM