Windows phone 7 如何从代码关闭Guide.BeginShowMessageBox
我正在Windows Phone 7上运行一个异步web请求,我希望用户能够在请求时间过长时取消该请求。我通过调用以下命令显示消息框:Windows phone 7 如何从代码关闭Guide.BeginShowMessageBox,windows-phone-7,Windows Phone 7,我正在Windows Phone 7上运行一个异步web请求,我希望用户能够在请求时间过长时取消该请求。我通过调用以下命令显示消息框: IAsyncResult result = Guide.BeginShowMessageBox("Synchronize", "Synchronizing with MyWebsite.com...", new string[] { "Cancel" }, 0, MessageBoxIcon.None, OnEndDialog, null); 在OnEndDi
IAsyncResult result = Guide.BeginShowMessageBox("Synchronize", "Synchronizing with MyWebsite.com...", new string[] { "Cancel" }, 0, MessageBoxIcon.None, OnEndDialog, null);
在OnEndDialog回调中,我可以取消请求,这很好
但是当请求完成时,我想关闭代码中的消息框。不幸的是,当我打电话时
Guide.EndShowMessageBox(result);
根据我的代码yes,我使用dispatcher.BeginInvoke在UI线程上运行调用,结果是一个阻塞调用,对话框仍在等待用户按下Cancel按钮
有没有办法从代码中关闭消息框?我想不可能从代码中关闭向导消息框 我通过使用来自的MessagePrompt控件解决了这个问题。你可以叫OnCompleted。。。关闭消息框 我在基类UserPrompt中添加了一个Dislose方法,该方法可以从后台线程调用:
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); }));
}
}