簡體   English   中英

由於SQLite,OpenFileDialog上的ShowDialog調用使WPF應用程序崩潰

[英]ShowDialog call on OpenFileDialog crashing WPF application because of SQLite

我正在使用Visual Studio 2015開發WPF應用程序(x64,.Net 4)。作為應用程序主頁的一部分,我有一個打開文件瀏覽器的按鈕。

Button Click事件如下...

openFileDialog.InitialDirectory = Environment.SpecialFolder.Personal.ToString();
openFileDialog.Title = "Select Profile Configuration Files";
openFileDialog.Filter = "Profile Config Files (*.cfg)|*.cfg|All files (*.*)|*.*";
openFileDialog.FilterIndex = 1;
openFileDialog.RestoreDirectory = true;

if (openFileDialog.ShowDialog() == true)
{
     try
     {
         _LoadConfigProfile(openFileDialog.FileName.ToString());
     }
     catch (Exception ex)
     {
         MessageBox.Show("Error: Could not read file from disk. Original error: " + ex.Message, "Error Opening Prfile", MessageBoxButton.OK, MessageBoxImage.Error);
     }
}

但是,每次單擊按鈕時,文件瀏覽器都會打開,但是在一秒鍾后,該應用程序便崩潰了。 使用斷點,我發現崩潰發生在openFileDialog.ShowDialog()

VS2015中顯示的錯誤如下

錯誤窗口

調用堆棧如下 調用堆棧

作為應用程序的一部分,我正在使用SQLite處理一些數據。 我已經在應用程序的開頭打開了一個數據庫連接。

有人遇到過這樣的問題嗎? 我該如何解決?

如果您需要有關該應用程序和錯誤的更多信息,請發表評論。

文件選擇器位於公共控件DLL中,除非您調用create OpenFileDialog對象,否則它可能不會加載到WPF應用程序中。 檢查輸出日志,以查看它此時未加載其他(附加)sqlite.dll。

正如評論中提到的那樣,我遇到了這個問題,我以前避免使用文件選擇器,但是由於有一個新的要求,我不得不添加一個文件選擇器,然后在文件選擇器對話框顯示之后應用程序再次崩潰。

如果查看輸出日志,它將顯示sqlite源中的行號,如果已在使用庫時調用了sqlite3_config,則該行號將在sqlite3_config中引發。 在輸出日志中再往回看可以看到,在發生此異常之前,從C:\\ Program Files(x86)\\ Dell Backup And Recovery \\中加載了commoncontrols.dll和其他sqlite.dll,即另一個sqlite.dll比已經在使用的,當然不是庫的位置,但是大概在路徑中。 我卸載了Dell Backup and Recovery,該錯誤不再發生。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM