2013-03-03 49 views
0

這可能是一個MVVM光的問題不是一個問題WinRT的更多,但我有一個使用MVVM光和SQLite用C#編寫的應用程序。這是一個電視節目庫應用程序,可在主頁上顯示所有系列節目。然後,您可以深入瞭解您擁有的劇集等等。無論如何,我使用mvvm-light messenger將數據從系列庫頁面的視圖模型發送到情節頁面的視圖模型。我在收到消息時使用SQLite填充名爲CombinedVMs的ObservableCollection < object> collection。FatalExecutionEngineError

麻煩的是,似乎是我得到這樣的導航真正的隨機誤差。錯誤是代碼80131544,我無法從調試器獲得任何其他信息,因爲「原生框架位於調用堆棧之上」。這個錯誤似乎總是停留在我的CombinedVMs集合上,通常當我嘗試添加它的時候。有時,當我點擊後退按鈕時發生錯誤,並且在CombinedVMs集合被清除的地方調用一個方法。有時候我可以在很多次之間來回切換,有時我可以在碰到錯誤之前做兩次。

這隻發生在我身上時,我改變了我的代碼,從在劇集視圖上使用分組的GridView控件轉換爲使用ItemTemplateSelector區分季節標題和劇集的非分組GridView。我使用CombinedVMs(ObservableCollection < object>)來保存SeasonItemViewModels和EpisodeItemViewModels。

我想知道,如果這有因與我是如何已經設置了代碼的MVVM光部分。以下是我如何進行導航。

public RelayCommand GoToSeriesCommand 
{ 
    get 
    { 
     return _gotoSeriesCommand ?? (_gotoSeriesCommand = new RelayCommand(() => 
       { 
        SimpleIoc.Default.GetInstance<SeriesViewModel>(); 
        Messenger.Default.Send<NavigateToSeriesViewMessage>(new NavigateToSeriesViewMessage() 
        { 
         FolderGuid = this.FolderGuid, 
         DisplayName = this.DisplayName, 
         FanartPathList = this.FanartPathList, 
         SeriesId = this.SeriesId 
        }); 
        MainViewModel._navigationService.Navigate(typeof(SeriesView)); 
       })); 
    } 
} 

我ViewModelLocator有這個它是相關的:

static ViewModelLocator() 
{ 
    ServiceLocator.SetLocatorProvider(() => SimpleIoc.Default); 

    if (ViewModelBase.IsInDesignModeStatic) 
    { 
     SimpleIoc.Default.Register<IDataService, Design.DesignDataService>(); 
     SimpleIoc.Default.Register<INavigationService, DesignNavigationService>(); 
    } 
    else 
    { 
     SimpleIoc.Default.Register<IDataService, DataService>(); 
     SimpleIoc.Default.Register<INavigationService>(() => new NavigationService()); 
    } 

    SimpleIoc.Default.Register<SeriesViewModel>(); 

} 

public SeriesViewModel SeriesVM 
{ 
    get 
    { 
     return ServiceLocator.Current.GetInstance<SeriesViewModel>(); 
    } 
} 

static public SeriesViewModel SeriesVMStatic 
{ 
    get 
    { 
     return ServiceLocator.Current.GetInstance<SeriesViewModel>(); 
    } 
} 

不管怎麼說,我很爲難。我不知道如何繼續。微軟論壇上有一個關於這個特定錯誤代碼的話題,但是它是從去年開始的,並且聲稱它已經從更新中修復。

我能提供什麼嗎?我不知道該從哪裏出發....在此先感謝!

回答

1

我剛纔有一個。如果您使用了非託管資源並且未正確清理它們,則會發生這種情況。您可能會發現SQLLite DB正在使用非託管代碼。我建議你通過並確保在使用後處理所有的SQLLite實例。

+0

謝謝。沒有意識到我有一個答案。對不起,不提前信用。事實上,我幾乎不能記住這個問題。 :( 我確實有很多使用SQLite的問題......尤其是嘗試使用它們的異步代碼。 – 2013-06-29 19:54:35

相關問題