[英]Unable to retrieve input from user via MessageDialog before the code moving forward
我试图调用一个MessageDialog,提示您输入用户,然后继续进行该输入。
下面是该代码。
XAML
<Button Content="Click" Click="Button_Click"/>
XAML文件
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;
}
在上面的代码中,我希望在Debug Writeline之前设置_res,但是以某种方式我无法实现。 不幸的是,对于UWP,似乎MessageDialog没有可供我同步使用的任何选项。
我一直在尝试对Task使用.Wait()方法,但它会导致死锁(我读到了有关此内容的信息,这与UI线程被锁定而无法显示MessageDialog有关)我也尝试了其他几种方法,但均无效果。 我开始认为这是不可能的。
请帮助对此有所帮助。
在上面的代码中,我希望在Debug Writeline之前设置_res,
请在Click_Helper
方法之前添加await
关键字。
private async void Button_Click(object sender, RoutedEventArgs e)
{
await Click_Helper(sender, e);
System.Diagnostics.Debug.WriteLine(_res.ToString());
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.