これは私の問題の小さな例です。同じエラーに関する他の質問から解決できませんでした。
UI スレッドは、次の行を持つボタン クリックから関数を呼び出します。
await DataSet.AddFileAsync(String.Format("ms-appdata:///local/IMM_FACE_DB/{0}", file.Name));
AddFileAsync は次のようになります。
public ObservableCollection<Model> Data {get;set;}
public Task AddFileAsync(string path)
{
return Task.Factory.StartNew((state) =>
{
// Here some IO and computation is done, eventually some content is added
// to Data. Data is also bound to a GridView and this fails.
//I assumed that TaskScheduler.FromCurrentSynchronizationContext()
// would solve this, but it does not.
}, TaskScheduler.FromCurrentSynchronizationContext());
}
上記のコードで書いたように、TaskScheduler はそれが UI スレッドで実行されていることを確認できると想定しました。AddFileAsync は Databound Buttonclick コマンドから呼び出されるためです。
どこで何かを誤解しましたか? そして、これを行うための正しい待機は何でしょうか。