我的Windows Phone应用程序关闭时如何进行异步调用

时间:2011-07-18 09:25:44

标签: wcf windows-phone-7 asynchronous

在我的Windows Phone 7应用程序中,我想在应用程序关闭时进行WCF调用。 但是,当我拨打电话时,应用程序最终会显示在:

    private void Application_UnhandledException(object sender, ApplicationUnhandledExceptionEventArgs e)
    {
        if (Debugger.IsAttached)
        {
            // An unhandled exception has occurred; break into the debugger
            Debugger.Break();
        }
    }

当我检查异常消息时它是空的,但是有这个堆栈跟踪。

at System.ServiceModel.AsyncResult.Complete(Boolean completedSynchronously)
at System.ServiceModel.AsyncResult.Complete(Boolean completedSynchronously, Exception exception)
at System.ServiceModel.Channels.HttpOutput.WebRequestHttpOutput.GetOutputStreamAsyncResult.OnGetRequestStream(IAsyncResult result)
at System.Net.Browser.ClientHttpWebRequest.<>c__DisplayClass6.<InvokeGetRequestStreamCallback>b__4(Object state2)
at System.Threading.ThreadPool.WorkItem.doWork(Object o)
at System.Threading.Timer.ring()

我尝试在我的通话中添加try / catch块,但它仍然以相同的方式结束。

如何成功拨打电话?

2 个答案:

答案 0 :(得分:4)

不,你不能在应用程序关闭时进行异步调用。如果您绝对必须在应用程序关闭时发送内容,则必须将其写入隔离存储,然后在下次启动应用程序时发送 - 这是记录会话结束时间的一些分析框架。

答案 1 :(得分:1)

正如您在代码中展示了unhnadled excpetion处理程序一样,我假设您希望在出现此类异常时进行调用,而不仅仅是每次应用程序关闭时。

不要!
如果发生某些事情导致未处理的异常,您应该保存详细信息,然后在下次启动应用程序时发送它们。您不知道发送将花多长时间,您的应用可能会在此期间被拆除 在未处理的异常处理程序中打开EmailComposeTask时,很多人都会犯这个错误。