2013-11-12 2 views
0

В приведенном ниже коде вызывается invalidOperationException, но только если отладчик отсоединен. Код цели 7.1 и время от времени пользователи сообщают о проблемах. Это первый раз, когда я могу воспроизвести эту проблему на устройстве Windows Phone 8, но только когда я отсоединяю отладчик. Когда отладчик подключен, код работает отлично. Проблема не является последовательным воспроизведением. В аналитике я видел небольшой процент пользователей, столкнувшихся с этой проблемой. Любая идея, что здесь происходит?Перечисление снимков рулона камеры throws invalidoperationexception

 PictureAlbum localRoll = media.GetCameraRoll(); 
     foreach (Picture pic in localRoll.Pictures) // exception here 
     { 

     } 


     public PictureAlbum GetCameraRoll() 
     { 
     // Work around for known bug in the media framework. Hits the static constructors 
     // so the user does not need to go to the picture hub first. 
     MediaPlayer.Queue.ToString(); 

     MediaLibrary ml = null; 
     PictureAlbum cameraRoll = null; 

     foreach (MediaSource source in MediaSource.GetAvailableMediaSources()) 
     { 
      if (source.MediaSourceType == MediaSourceType.LocalDevice) 
      { 
       ml = new MediaLibrary(source); 

       PictureAlbumCollection allAlbums = ml.RootPictureAlbum.Albums; 

       foreach (PictureAlbum album in allAlbums) 
       { 
        if (album.Name == "Camera Roll") 
        { 
         cameraRoll = album; 
         return cameraRoll; 
        } 
       } 
      } 
     } 

     return null; 
    } 

System.InvalidOperationException: Произошла непредвиденная ошибка. на Microsoft.Xna.Framework.Media.MediaLibraryEnumerator'1.System.Collection.Ienumerator'1.get_Item (индекс Int32)

+0

is 'Pictures' null? –

+0

Это не пустое место в репродукции. –

ответ

0

Пожалуйста, проверьте, если localRoll и localRoll.Pictures != null и localRoll.Pictures.Count > 0 потому, что его, возможно, что некоторые телефоны имеют 0 фотографий и код пытается выполнить итерацию по коллекции null.

PictureAlbum localRoll = media.GetCameraRoll(); 
    if(localRoll != null) 
    { 
     if(localRoll.Pictures != null) 
     { 
      if(localRoll.Pictures.Count > 0) 
      { 
      foreach (Picture pic in localRoll.Pictures) 
      { 

      } 
      } 
     } 
    } 
+0

Граф null и содержит сотни предметов. –

2

Очень странно, но работает. Вызов OrderBy сначала на изображениях не генерирует исключение.

   var a = localRoll.Pictures; 

       foreach (Picture pic in a.OrderBy(x=>x.Date)) 
       { 

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