私は現在、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 は null ではありません。非同期メソッドを使用していて、ディスパッチャーが必要な場合、それは null です。
ポインタはありますか?
ブルグズ、
ポルカ過激派