【发布时间】:2012-12-16 02:22:06
【问题描述】:
我的 WPF 应用程序正在使用 Microsoft.Win32.OpenFileDialog 来选择要打开的 SQL Server 2008 数据库。
它工作正常,但有一个问题:当对话框中选择的数据库之前在上次启动后的某个时间打开时,该文件似乎由 SQL 服务器在后台保持打开状态(即使我没有打开它应用程序和我的应用程序已重新启动)。当在 OpenFileDialog 中单击确定时,这会导致“文件被另一个应用程序使用”警告,并且在计算机重新启动之前我无法使用该对话框打开该特定数据库。似乎 OpenFileDialog 试图打开选定的文件并发现它已被另一个应用程序(SQL Server)打开。如何禁用 OpenFileDialog 尝试打开所选文件并仅返回所选文件的文件名而不进行任何检查?
我的代码如下所示:
public void OpenDatabase() {
// Let user select database to open from file browser dialog
// Configure open file dialog box
var dlg = new Microsoft.Win32.OpenFileDialog();
dlg.FileName = ""; // Default file name
dlg.DefaultExt = ".mdf"; // Default file extension
dlg.Filter = "Databases (.mdf)|*.mdf|All Files|*.*"; // Filter files by extension
dlg.CheckFileExists = false;
dlg.CheckPathExists = false;
// Show open file dialog box
bool? result = dlg.ShowDialog(); // Gives file in use warning second time!
// Process open file dialog box results
if (result == true) {
// Open document
string filename = dlg.FileName;
TryOpenDatabase(filename);
}
}
【问题讨论】:
-
我删除了您提到的 WPF(与任何代码和问题完全无关)并将其重新标记为 WinApi。说真的,如果您对 WPF 没有任何问题,请不要假装有问题。是Win32.OpenFIleDialog,Win32不是WPF。
标签: wpf openfiledialog