为什么在第二种情况下抛出异常?
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)
}
}
答案 0 :(得分:1)
f()
函数使用包含async
的函数。
所以我认为f()
也应该签名async
。
像这样:void async f(){...}
答案 1 :(得分: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(););
}
}
即使我不完全确定你可以在完成的回调中做异步。