Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/wpf/12.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# OpenFileDialog上的ShowDialog调用由于SQLite而导致WPF应用程序崩溃_C#_Wpf_Sqlite_Visual Studio 2015 - Fatal编程技术网

C# OpenFileDialog上的ShowDialog调用由于SQLite而导致WPF应用程序崩溃

C# OpenFileDialog上的ShowDialog调用由于SQLite而导致WPF应用程序崩溃,c#,wpf,sqlite,visual-studio-2015,C#,Wpf,Sqlite,Visual Studio 2015,我正在使用Visual Studio 2015开发一个WPF应用程序(x64、.Net 4)。作为应用程序主页的一部分,我有一个按钮可以打开文件浏览器 按钮单击事件如下所示 openFileDialog.InitialDirectory = Environment.SpecialFolder.Personal.ToString(); openFileDialog.Title = "Select Profile Configuration Files"; openFileDialog.Filter

我正在使用Visual Studio 2015开发一个WPF应用程序(x64、.Net 4)。作为应用程序主页的一部分,我有一个按钮可以打开文件浏览器

按钮单击事件如下所示

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 a OpenFileDialog对象之前,该DLL可能不会加载到WPF应用程序中。检查输出日志,查看此时是否没有加载其他(附加)sqlite.dll

正如在评论中提到的,我遇到了这个问题,以前我避免使用文件选择器,但由于有一个新的要求,我不得不添加一个,在这样做时,应用程序在文件选择器对话框显示后再次崩溃

如果查看输出日志,它会显示sqlite源中的行号,如果在库已在使用时调用该行号,则该行号是sqlite3_config中引发的异常。
进一步查看输出日志显示,在发生此异常之前,commoncontrols.dll和另一个sqlite.dll是从C:\Program Files(x86)\Dell Backup and Recovery \-加载的,即与已在使用的sqlite.dll不同,当然不是库的位置,但可能在路径中更早。我卸载了Dell Backup and Recovery,错误不再发生。

文件选择器位于公共控制DLL中,在调用create a OpenFileDialog对象之前,该DLL可能不会加载到WPF应用程序中。检查输出日志,查看此时是否没有加载其他(附加)sqlite.dll

正如在评论中提到的,我遇到了这个问题,以前我避免使用文件选择器,但由于有一个新的要求,我不得不添加一个,在这样做时,应用程序在文件选择器对话框显示后再次崩溃

如果查看输出日志,它会显示sqlite源中的行号,如果在库已在使用时调用该行号,则该行号是sqlite3_config中引发的异常。
进一步查看输出日志显示,在发生此异常之前,commoncontrols.dll和另一个sqlite.dll是从C:\Program Files(x86)\Dell Backup and Recovery \-加载的,即与已在使用的sqlite.dll不同,当然不是库的位置,但可能在路径中更早。我卸载了Dell Backup and Recovery,错误不再发生。

长时间保持连接打开不是一种好做法,您应该仅在需要时连接到db。请检查SQLite的版本。SQlite带有64位和32位。请确保使用64位版本的SQlite。我正在使用64位版本,但仍然没有成功。作为数据点,我知道这没有帮助,我正在使用VS 2005和SQlite在.net 4.5中编写WPF应用程序,当我打开文件选择器时,它也会崩溃,但甚至不会进入调试器。这段代码与任何SQLite处理代码都相去甚远。@Woody,我也遇到过同样的情况,最终无法解决这一问题。长时间保持连接打开不是一个好做法,您应该只在需要时连接到db。请检查SQLite的版本。SQlite带有64位和32位。请确保使用64位版本的SQlite。我正在使用64位版本,但仍然没有成功。作为数据点,我知道这没有帮助,我正在使用VS 2005和SQlite在.net 4.5中编写WPF应用程序,当我打开文件选择器时,它也会崩溃,但甚至不会进入调试器。这段代码与任何SQLite处理代码相差甚远。@Woody,我也遇到过同样的情况,最终无法解决这个问题。据我记忆所及,我找到了一些解决办法(我记不起来了),并在几个月前完成了这个项目。但是,我必须说,你所说的,实际上是有道理的。我还使用安装了“Dell备份和恢复”的Dell笔记本电脑。所以,也许,这就是问题所在,我没能弄明白。谢谢分享。据我记忆所及,我想出了一些办法(我不记得了),并在几个月前完成了这个项目。但是,我必须说,你所说的,实际上是有道理的。我还使用安装了“Dell备份和恢复”的Dell笔记本电脑。所以,也许,这就是问题所在,我没能弄明白。谢谢分享。