내 WPF 앱은 Microsoft.Win32.OpenFileDialog를 사용하여 열 SQL Server 2008 데이터베이스를 선택합니다.WPF OpenFileDialog에서 사용중인 파일 검사를 비활성화하는 방법은 무엇입니까?
문제없이 작동합니다. 대화 상자에서 선택한 데이터베이스가 마지막 부팅 후 이전에 열렸을 때 파일이 백그라운드에서 SQL 서버에 의해 열린 상태로 유지되는 것처럼 보입니다. 내 응용 프로그램과 내 응용 프로그램이 다시 시작되었습니다). OpenFileDialog에서 OK를 클릭하면 대화 상자를 사용하여 컴퓨터가 재부팅 될 때까지 해당 특정 데이터베이스를 열 수 없기 때문에 "파일이 다른 응용 프로그램에서 사용되었습니다."라는 경고가 나타납니다. 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로 다시 태그 :이 옵션은 OpenFileDialog를 래퍼 클래스에 노출 된 사실, 당신의 문제를 해결하기 위해이 코드 줄을 추가입니다 . 심각하게도, WPF에 관한 문제를 해결하지 못한다면, 그 중 하나만 가지는 척하지 마십시오. Win32.OpenFIleDialog이며 Win32는 WPF가 아닙니다. – TomTom