我目前正在研究 Windows 商店应用程序和 wp8 应用程序,它们都是 sl 和 c# 项目。
获取调度程序与 wpf 不同,我有点困惑,因为 Window.Current 中的调度程序似乎在我的一些异步方法中消失了。
我所能做的基本上只是在 App 类中放置一个属性,但这似乎很不安全,我不遵循这里的逻辑。
我将发布一个示例:
internal class MainviewModel : ViewModelBase
{
..............
private async void GetLastDocumetAsync()
{
// Window.Current is null here, but not outside async!
await Window.Current.Dispatcher.RunAsync(CoreDispatcherPriority.Normal, () =>
{
ObservableCollection<ScannedDocument> docs = await ServiceLocator.DocumentClient.GetLastScannedDocumentsAsync();
ScannedDocuments.AddRange(docs);
SelectedDocument = ScannedDocuments.LastOrDefault();
}
}
...
public void SomeMethod(){
// Window.Current is not null
Task.Factory.StartNew(() => GetLastDocumetAsync());
}
}
调用 SomeMethod() 时,Window.Current 不为空。当我们在异步方法中时,我需要调度程序,它是空的。
任何指针?
兄弟,
波尔卡极端主义者