locked
ExecutionEngineException в Windows Phone 8 во время перехода на старницу RRS feed

  • Вопрос

  • Доброго времени суток,

    у меня возникает исключение ExecutionEngineException во время перехода на страницу:

    private void FriendsMainTxt_Tap(object sender, System.Windows.Input.GestureEventArgs e)
        {
            NavigationService.Navigate(new Uri("/View/Map/UserMap.xaml?type=users", UriKind.Relative));
        }
    
    protected override void OnNavigatedTo(NavigationEventArgs e)
            {
                base.OnNavigatedTo(e);
                if (NavigationContext.QueryString["type"] != null) //ExecutionEngineException here
                {
                    typeMap = NavigationContext.QueryString["type"];
                }
           }

    Причем ошибка появляется только на WP8 устройстве, на эмуляторе никогда не возникает. После исключения выполняется стандартный код, для случаев ошибки навигации. Данное исключение может возникать в случаях ошибок в процессе сборки мусора, но как я могу повлиять на этот процесс в WP? И почему только на устройстве возникает ошибка, а на эмуляторе все нормально? Любые идеи.

    Заранее спасибо!

    5 апреля 2013 г. 6:35

Ответы

  • Добрый день!

    Собственно говоря вот https://connect.microsoft.com/bingmaps/feedback/details/783257/windows-phone-8-bing-maps-memory-leak , надеюсь это как то поможет. Хотя Visual Studio предупреждала  "This class has been deprecated.  Use Microsoft.Phone.Maps.dll instead."

    9 апреля 2013 г. 10:17
  • Я кажется разобрался почему так происходит, но от этого не легче. Проблема с картами Bing, в общем ситуация такая. В приложении при переходе на страницу с картами начинает расходоваться много оперативной памяти, 50 - 60 Мб - это норма (так как грузится много маленьких изображений). Но после ухода с этой страницы память не освобождается, и со временем расход оперативной памяти сильно увеличивается, таким образом легко превысить допустимый предел в 90 Мб. Насколько я знаю, эта проблема была еще на WP 7 (https://connect.microsoft.com/VisualStudio/feedback/details/625627/wp7-bing-map-control-memory-leak#), но видимо ее пофиксили. Так как на WP 7 сейчас я не наблюдай таких проблем, а вот на WP 8 если использовать не новые Nokia Maps, а старые карты Bing, то все очень печально. Причем System.GC.Collect();
    System.GC.WaitForPendingFinalizers(); bing.SetMode(new NullMode(), false); и т.д. эту проблему не решают. Я бы с радостью использовал новые карты, которые прекрасно работают, но это слишком затратно, т.к. я портирую проект с WP7 и придется много переписывать, да и использование своих тайлов (я использую Google Maps) в новом контроле запрещено. Я даже не знаю как бороться с этими картами..

    Вот здесь еще немного о проблеме http://stackoverflow.com/questions/15876001/windows-phone-8-old-map-vs-new-map Я до последнего верил, что баг это лично мой, так как проект геолокационный и большая вероятность, что то сделать не так с картами, но он легко воспроизводится на контроле без каких либо дополнительных действий.
    9 апреля 2013 г. 7:53

Все ответы

  • Добрый день!

    Скорее всего только путем поиска и устранения причины возникновения этого исключения.

    9 апреля 2013 г. 6:18
  • Я кажется разобрался почему так происходит, но от этого не легче. Проблема с картами Bing, в общем ситуация такая. В приложении при переходе на страницу с картами начинает расходоваться много оперативной памяти, 50 - 60 Мб - это норма (так как грузится много маленьких изображений). Но после ухода с этой страницы память не освобождается, и со временем расход оперативной памяти сильно увеличивается, таким образом легко превысить допустимый предел в 90 Мб. Насколько я знаю, эта проблема была еще на WP 7 (https://connect.microsoft.com/VisualStudio/feedback/details/625627/wp7-bing-map-control-memory-leak#), но видимо ее пофиксили. Так как на WP 7 сейчас я не наблюдай таких проблем, а вот на WP 8 если использовать не новые Nokia Maps, а старые карты Bing, то все очень печально. Причем System.GC.Collect();
    System.GC.WaitForPendingFinalizers(); bing.SetMode(new NullMode(), false); и т.д. эту проблему не решают. Я бы с радостью использовал новые карты, которые прекрасно работают, но это слишком затратно, т.к. я портирую проект с WP7 и придется много переписывать, да и использование своих тайлов (я использую Google Maps) в новом контроле запрещено. Я даже не знаю как бороться с этими картами..

    Вот здесь еще немного о проблеме http://stackoverflow.com/questions/15876001/windows-phone-8-old-map-vs-new-map Я до последнего верил, что баг это лично мой, так как проект геолокационный и большая вероятность, что то сделать не так с картами, но он легко воспроизводится на контроле без каких либо дополнительных действий.
    9 апреля 2013 г. 7:53
  • Привет.

    Было бы очень здорово, если вы также создали бы баг-репорт на Microsoft Connect и выложи ли бы ссылку здесь и на stackoverlow, чтобы пользователи могли поддержать проблему.

    Спасибо.


    Для связи [mail]

    9 апреля 2013 г. 8:56
  • Добрый день!

    Собственно говоря вот https://connect.microsoft.com/bingmaps/feedback/details/783257/windows-phone-8-bing-maps-memory-leak , надеюсь это как то поможет. Хотя Visual Studio предупреждала  "This class has been deprecated.  Use Microsoft.Phone.Maps.dll instead."

    9 апреля 2013 г. 10:17