在我的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块,但它仍然以相同的方式结束。
如何成功拨打电话?
答案 0 :(得分:4)
不,你不能在应用程序关闭时进行异步调用。如果您绝对必须在应用程序关闭时发送内容,则必须将其写入隔离存储,然后在下次启动应用程序时发送 - 这是记录会话结束时间的一些分析框架。
答案 1 :(得分:1)
正如您在代码中展示了unhnadled excpetion处理程序一样,我假设您希望在出现此类异常时进行调用,而不仅仅是每次应用程序关闭时。
不要!
如果发生某些事情导致未处理的异常,您应该保存详细信息,然后在下次启动应用程序时发送它们。您不知道发送将花多长时间,您的应用可能会在此期间被拆除
在未处理的异常处理程序中打开EmailComposeTask时,很多人都会犯这个错误。