[英]Call PrintDialog.ShowDialog() in a WPF UserControl which is hosted in WinForms Application
[英]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.