2

即使NavigationService.CanGoBack回報True崩潰時,NavigationService.GoBack()我拋出這些異常:的Windows Phone應用程序中使用NavigationService.GoBack()太快

A first chance exception of type 'System.ArgumentException' occurred in System.Windows.dll 
A first chance exception of type 'System.Reflection.TargetInvocationException' occurred in 

這發生系統上的兩個案例,而第三個正常工作:

  • 崩潰,如果我叫NavigationService.GoBack()OnNavigatedTo()
  • 崩潰如果我打電話NavigationService.GoBack()在拋出WebException結果我HTTPWebRequest上網時不可用[1]
  • 工作正常,如果互聯網接入和我打電話NavigationService.GoBack()當我HTTPWebRequest得到的結果,分析它們,並顯示他們。

我的理論是,我不能從一個頁面導航到另一個......我的問題後立即撥打GoBack()我如何編程回去了導航堆棧時HTTPWebRequest加載失敗?

編輯:我決定做另一種方式,但我認爲我的問題可能是由於導航動畫和Windows Phone的C#工具包(我用2011年2月版)


[1 ]案例2我的代碼的詳細信息:

我有一個簡單HTTPWebRequest。我的回調執行此操作,並且在飛行模式下我的應用程序崩潰。該生產線NavigationService.GoBack()負責,即使NavigationService.CanGoBack回報true

 try 
     { 
      response = request.EndGetResponse(result); 
     } 
     catch (WebException) 
     { 
      Dispatcher.BeginInvoke(() => 
      { 
       NavigationService.GoBack(); 
      }); 
     } 

我嘗試使用Deployment.Current.Dispatcher.BeginInvoke()也。

+0

我的第一個猜測是你必須確保在UI線程上執行NavigationService.GoBack(),但這就是你顯然正在做的事情......你是否檢查過你導航的頁面是否正在加載?如果導致這些異常,可能是那個頁面? –

+0

你說得對。如果我做'NavigationService。GoBack()'而不是'HTTPWebRequest',然後GoBack()在catch中我有相同的異常!但我甚至沒有去過我的'OnNavigatedTo'!如果我有互聯網,一旦請求成功,請執行Web請求並在主線程上調用GoBack,但它工作正常。我的猜測是GoBack失敗,如果它發生得太快?我會更新我的問題 –

回答

0

您可以嘗試使用WebClient client = new WebClient();,然後使用client.DownloadStringAsync(new Uri("request_url"));發出請求並訂閱client.DownloadStringCompleted事件以在請求完成時接收您的數據。分析數據之後,在事件處理程序,你可以調用NavigationService.GoBack();或者去任何你想要的頁面。

另外,如果你嘗試做一些在OnNavigatedTo事件,遇到了麻煩,你可以嘗試使用OnNavigatingFrom來代替(在以前的頁面OFC),取消了導航e.Cancel = true;,做你的事,如發出請求和東西,然後獲取應用程序框架和導航到e.Uri(基本上延續先前取消了導航)。

雖然這第二個也可能代表一個解決方案,我認爲第一個更好,因爲它做的所有工作異步,因此不阻止你的UI線程。這是我通常在我的應用程序中使用的。希望能幫助到你。

相關問題