2016-06-14 49 views
0

當其連接到PC並使用調試器運行時,應用程序可以正常工作。當我斷開手機與PC的連接,從手機運行應用程序並嘗試打開圖庫並將圖像設置爲圖像控制時,問題就開始了。我試圖在try/catch上的文件中寫入錯誤,但catch永遠不會被調用,就像執行應用程序時沒有錯誤一樣。當其未連接到調試器時,Wp 8.1應用程序崩潰

這是代碼,我選擇IMG:

private async void galleryBtn_Click(object sender, RoutedEventArgs e) 
     { 
      try 
      { 
       FileOpenPicker filePicker = new FileOpenPicker(); 
       filePicker.SuggestedStartLocation = PickerLocationId.PicturesLibrary; 
       filePicker.ViewMode = PickerViewMode.Thumbnail; 

       // Filter to include a sample subset of file types 
       filePicker.FileTypeFilter.Clear(); 
       filePicker.FileTypeFilter.Add(".bmp"); 
       filePicker.FileTypeFilter.Add(".png"); 
       filePicker.FileTypeFilter.Add(".jpeg"); 
       filePicker.FileTypeFilter.Add(".jpg"); 

       filePicker.PickSingleFileAndContinue(); 
       view.Activated += viewActivated; 

      } 
      catch (Exception err) 
      { 
       string error = err.StackTrace.ToString(); 
       await saveStringToLocalFile("test11", error); 
      } 
     } 

而且比它進入:

private async void viewActivated(CoreApplicationView sender, IActivatedEventArgs args1) 
     { 
      try 
      { 
       FileOpenPickerContinuationEventArgs args = args1 as FileOpenPickerContinuationEventArgs; 

       if (args != null) 
       { 
        if (args.Files.Count == 0) return; 

        view.Activated -= viewActivated; 
        StorageFile storageFile = args.Files[0]; 
        var stream = await storageFile.OpenAsync(Windows.Storage.FileAccessMode.Read); 
        var bitmapImage = new Windows.UI.Xaml.Media.Imaging.BitmapImage(); 
        await bitmapImage.SetSourceAsync(stream); 

        var decoder = await Windows.Graphics.Imaging.BitmapDecoder.CreateAsync(stream); 
        var obj = App.Current as App; 
        obj.ImageToEdit = bitmapImage; 
        obj.fileTransfer = storageFile; 
        checkTorch = -1; 
        await newCapture.StopPreviewAsync(); 
        Frame.Navigate(typeof(EditImage)); 
       } 
      } 
      catch (Exception err) { 
       string error = err.StackTrace.ToString(); 
       await saveStringToLocalFile("test11", error); 
      } 
     } 

當IMG選擇我打開屏幕,圖像編輯和運行這個

protected override async void OnNavigatedTo(NavigationEventArgs e) 
     { 
      try 
      { 

       var obj = App.Current as App; 
       slika = obj.ImageToEdit; 
       original = obj.ImageToEdit; 
       ImagePreview.Source = slika; 
       RotateTransform myRotateTransform = new RotateTransform(); 
       myRotateTransform.Angle = 0; 
       ImagePreview.RenderTransform = myRotateTransform; 
       var localSettings = ApplicationData.Current.LocalSettings; 
      } 
      catch (Exception err) 
      { 
       string error = err.StackTrace.ToString(); 
       await saveStringToLocalFile("test11", error); 
      } 

     } 

就是這樣,任何建議,讚賞;

+0

究竟哪裏崩潰? – Archana

+0

當我打開畫廊,並選擇它的圖像,操作系統寫繼續。 。 。 (加載消息),然後應用程序崩潰 –

+0

它總是崩潰或隨機? – Archana

回答

1

問題出在我的MediaCapture上。首先使用mediaCapture.stopPreviewAsync();停止預覽,並且您必須釋放mediaCapture。 致電前fileOpener使用此代碼:

newCapture.Dispose();

0

爲了捕捉未處理的異常,你可以使用一個全局異常捕手, 在App.xaml.cs文件中定義:

public App() 
{ 
    this.InitializeComponent(); 
    this.Suspending += this.OnSuspending; 
    this.UnhandledException += UnhandledExceptionHandler; 
} 

private void UnhandledExceptionHandler(object sender, UnhandledExceptionEventArgs e) 
{ 
    log.Critical(e.Exception); 
} 

這是重要的是要理解,並非所有例外都可以使用try \ catch捕獲,例如腐敗狀態異常: https://msdn.microsoft.com/en-us/magazine/dd419661.aspx#id0070035

在這種情況下,您可以通過查看由您的應用程序生成的.dmp文件來調試問題:{Phone} \ Documents \ Debug

+0

謝謝,我將使用它 –

相關問題