0

Я работаю над приложением Windows Store, и у меня возникла проблема.InitializeComponent - AccessViolationException

Я оставил свой компьютер с полностью функциональной программой без ошибок. Через пару дней от компьютера я начал его и попытался запустить свою программу. Он сразу же разбился и заявил: «AccessViolationException был необработанным. Попытка прочитать или записать защищенную память. Это часто свидетельствует о том, что другая память повреждена». в InitializeComponent.

Однако я могу изменить в своем файле App.Xaml.cs StartPage на главную страницу в методе OnLaunched, и он отлично работает. Но тогда у меня нет страницы входа. И я не могу перенаправить с главной страницы на LoginPage, иначе она сработает.

Мои CallStack [External Code]

EmployeeAssistant.exe! EmployeeAssistant.PagesWithSnappedViews.LoginPage.LoginPage() Строка 49 + 0x8 байт C# [External Code] EmployeeAssistant.exe! EmployeeAssistant.App. OnLaunched (Windows.ApplicationModel.Activation.LaunchActivatedEventArgs арг) линии 58 + 0x42 байт C# [External Code]

Моего Locals enter image description here

------------------- ------------------- Редактировать

private readonly ObservableCollection<PropertyInfo> _colorSource = new ObservableCollection<PropertyInfo>(); 
    private string _selectedColorName; 

    public ObservableCollection<PropertyInfo> ColorSource 
    { 
     get { return _colorSource; } 
    } 
    public string SelectedColorName 
    { 
     get { return _selectedColorName; } 
     set 
     { 
      _selectedColorName = value; 
      OnPropertyChanged(); 
     } 
    } 

    public LoginPage() 
    { 

      InitializeComponent(); 

      var colors = typeof(Colors).GetTypeInfo().DeclaredProperties; 

      foreach (var item in colors) 
      { 
       ColorSource.Add(item); 
      } 

    } 

App.OnLaunched:

/// <summary> 
    /// Invoked when the application is launched normally by the end user. Other entry points 
    /// will be used when the application is launched to open a specific file, to display 
    /// search results, and so forth. 
    /// </summary> 
    /// <param name="args">Details about the launch request and process.</param> 
    protected override void OnLaunched(LaunchActivatedEventArgs args) 
    { 
     Frame rootFrame = Window.Current.Content as Frame; 

     // Do not repeat app initialization when the Window already has content, 
     // just ensure that the window is active 
     if (rootFrame == null) 
     { 
      // Create a Frame to act as the navigation context and navigate to the first page 
      rootFrame = new Frame(); 

      if (args.PreviousExecutionState == ApplicationExecutionState.Terminated) 
      { 
       //TODO: Load state from previously suspended application 
      } 

      // Place the frame in the current Window 
      Window.Current.Content = rootFrame; 
     } 

     if (rootFrame.Content == null) 
     { 
      // When the navigation stack isn't restored navigate to the first page, 
      // configuring the new page by passing required information as a navigation 
      // parameter 
      if (!rootFrame.Navigate(typeof(LoginPage), args.Arguments)) 
      { 
       throw new Exception("Failed to create initial page"); 
      } 
     } 
     // Ensure the current window is active 
     Window.Current.Activate(); 
    } 

Если я пытаюсь отладки, чтобы увидеть, что происходит все это делает, чтобы загрузить код из LayoutAwarePage и этого ряда: частные чтения ObservableCollection _colorSource = новый ObservableCollection(); Затем он переходит к InitializeComponent, и я получаю AccessViolationException.

Есть ли у кого-нибудь представление о том, что происходит, и, может быть, как это решить?

Никлас

+0

Похоже, ваше приложение, возможно, имело некоторые проблемы при возобновлении после приостановки - можете ли вы опубликовать некоторый исходный код? –

+0

Отправленный некоторый исходный код. Надеюсь, этого достаточно. – NiklasHansen

+0

Возможно, вы также можете опубликовать 'EmployeeAssistant.App.OnLaunched'? –

ответ

1

Что я сделал, чтобы создать основную страницу и переделал мою страницу. И теперь это работает отлично. Не знаю, в чем была проблема. Но так я и решил.

0

У меня была такая же проблема. Создание новой страницы и делать это снова я получил тот же вопрос .. Так что я заметил биты из XAML, пока не определили причину, которая была:

<Style TargetType="TextBox" x:Key="printableTextBox"> 
    <Setter Property="BorderThickness" Value="{Binding IsPrinting, Converter={StaticResource printInputBoolToThicknessConverter}}"/> 
</Style> 

Turns out UWP XAML does not support Binding a Style's Setter.Value. Фактически в VS Setter имеет синюю squiggly с подсказкой «Катастрофический сбой»! Который я думал немного паникер.

Так что я надеюсь, что это поможет кому-то еще AccessViolationException совершенно бесполезно в этом случае.

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