1

asyncこのメソッドが NOT の場合、インターフェイスを実装するメソッドにメソッドを呼び出す方法はasync?

私の ViewModel にはasync、ユーザーがビューに移動するたびに実行するメソッドがあります。

私が見つけた最速の(悪い)解決策はこれです

public class MyViewModel : INavigationAware
{
    //[...]
    public async void OnNavigatedTo(NavigationContext navigationContext)
    {
        await Refresh();
    }
    public async Task Refresh()
    {
        await Task.Run(() => 
        {
           // Asynchronous work
        });
        /* Actions on Gui Thread */           
    }
    //[...]
}
4

1 に答える 1

0

質問から収集できることに基づいて、これはこれでうまくいくはずです。コンセプトの動作を確認するために、現在取り組んでいるプロジェクトで簡単なテストを行いました。このRefreshビュー モデルを使用してビューに移動するたびに、メソッドを実行する必要があります。

public class MyViewModel : INavigationAware
{
    //[...]
    public void OnNavigatedTo(NavigationContext navigationContext)
    {
        Refresh();
    }
    public async void Refresh()
    {
        await Task.Run(() => 
        {
           // Asynchronous work
        }).ContinueWith(t=> /* Actions on Gui Thread */, TaskScheduler.FromCurrentSynchronizationContext());            
    }
    //[...]
}

の を削除し、async/await何も返さないメソッドをOnNavigatedTo呼び出しました。async Refresh

于 2016-06-26T17:51:30.213 に答える