Windows phone 7 如何从代码关闭Guide.BeginShowMessageBox

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

我正在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);
根据我的代码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); }));
        }
    }