我正在尝试调用一个会提示用户输入的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());
}