0

Catel 4.0 で IMessageService を使用してダイアログを表示し、その結果をすぐに (非同期ではなく) 取得するにはどうすればよいですか?

以前は、次のようにして可能でした:

var messageService = ServiceLocator.ResolveType<IMessageService>();
var result = messageService.Show("<Message>", "<Header>", MessageButton.YesNo, MessageImage.Question);
if (result != MessageResult.Yes) 
    return;

Catel 4.0 のドキュメントには、「結果を待つために await または Task.ContinueWith を使用することが必要になりました」と記載されています。

私は非同期プログラミングに精通しておらず、多くのことを試しましたが、最終的には、実際のダイアログの結果を待つメソッドを取得できませんでした。

私はこのようなことをしました:

private async Task<bool> Close()
    {
        var saveChanges = false;

        var resolver = ServiceLocator.Default.GetDependencyResolver();
        var messageService = resolver.Resolve<IMessageService>();

        var result = await messageService.Show("<Text>", "<Header>", MessageButton.YesNo, MessageImage.Question);

        if (result == MessageResult.Yes)
            saveChanges = true;

        return saveChanges;
    }

誰かが私が間違っていることを教えてください、および/または待機して結果を同期的に取得する方法の例を提供できますか?

前もって感謝します。

4

1 に答える 1