0

为什么在第二种情况下抛出异常?

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)
    }
}
4

2 回答 2

1

f()函数使用一个函数,其中包括async. 所以我认为f()也应该签署async。像这样:void async f(){...}

于 2012-09-21T08:12:59.383 回答
0

如果您真的想要初始化媒体,为什么不在 .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(););
     }
  }

即使我不确定您是否可以在完成的回调中执行异步操作。

于 2012-08-16T17:43:26.083 回答