2016-06-14 2 views
0

Приложение работает, когда оно подключено к ПК и работает с отладчиком. Проблема начинается, когда я отсоединяю телефон от ПК, запускаю приложение с телефона и пытаюсь открыть галерею и установить изображение для управления изображением. Я попытался написать ошибку в файле 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

Когда я открываю галерею и выбираю изображение, os write Continue. , , (загрузочное сообщение), а затем сбой приложения –

+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

Спасибо, я буду использовать его –

Смежные вопросы