在代码向前移动之前,无法通过Messagedialog从用户检索输入



我正在尝试调用一个会提示用户输入的Messagedialog,然后继续进行该输入。

以下是为此的代码。

XAML

<Button Content="Click" Click="Button_Click"/>

xaml.cs

public MainPage()
{
    this.InitializeComponent();
}
private int _res;
private void Button_Click(object sender, RoutedEventArgs e)
{
    Click_Helper(sender, e);
    System.Diagnostics.Debug.WriteLine(_res.ToString());
    //Some other work will be done here
}
private async Task Click_Helper(object sender, RoutedEventArgs e)
{
    MessageDialog msgbox = new MessageDialog("Hello there");
    msgbox.Commands.Clear();
    msgbox.Commands.Add(new UICommand { Label = "Yes", Id = 0 });
    msgbox.Commands.Add(new UICommand { Label = "No", Id = 1 });
    var result = await msgbox.ShowAsync();
    _res = (int)result.Id;
}

在上面的代码中,我希望在调试写入之前设置_res,但是我无法实现这一点。不幸的是,对于UWP,Messagedialog似乎没有任何选择可以同步使用它。

我一直在尝试使用.wait((方法来完成该任务,但会导致僵局(我在某个地方阅读了有关此任务,并且与UI线程有关,因为UI线程锁定了自己,无法显示Messagedialog(我还尝试了其他几种方法,但无效。我开始认为这是不可能的。

请在此上帮助省一些灯。

在上面的代码中,我希望在调试写入之前设置_res,

请在Click_Helper方法之前添加await关键字。

private async void Button_Click(object sender, RoutedEventArgs e)
{
    await Click_Helper(sender, e);
    System.Diagnostics.Debug.WriteLine(_res.ToString());
}

最新更新