我正在Windows Phone 7上运行异步Web请求,我希望用户能够在需要太长时间时取消请求。我通过调用
来显示一个消息框IAsyncResult result = Guide.BeginShowMessageBox("Synchronize", "Synchronizing with MyWebsite.com...", new string[] { "Cancel" }, 0, MessageBoxIcon.None, OnEndDialog, null);
在OnEndDialog回调中,我可以取消请求,这可以正常工作。
但是当请求完成后,我想从我的代码中关闭消息框。不幸的是,当我打电话时
Guide.EndShowMessageBox(result);
从我的代码(是的,我使用dispatcher.BeginInvoke在UI线程上运行调用),结果是一个阻塞调用,对话框仍在等待用户按下取消按钮。
有没有办法从代码中关闭消息框?
答案 0 :(得分:0)
我想无法从代码中关闭“指南”消息框。
我使用Coding4Fun Windows Phone Toolkit中的MessagePrompt控件解决了这个问题。您可以调用OnCompleted(...)来关闭消息框。
我在基类(UserPrompt)中添加了一个Dismiss方法,可以从后台线程调用:
public void Dismiss(PopUpResult result)
{
// Dismiss can be called from any thread. Make sure to execute on UI thread:
Dispatcher dispatcher = Deployment.Current.Dispatcher;
if (dispatcher.CheckAccess())
{
OnCompleted(new PopUpEventArgs<string, PopUpResult> { PopUpResult = result });
}
else
{
dispatcher.BeginInvoke((Action)(() => { Dismiss(result); }));
}
}