2013-08-29 51 views
0

我正在使用microsoft.win32.savefiledialog保存一个文件夹内的文件。 只有在Windows XP中,将文件保存到文件夹(例如:abc)后,我无法删除abc文件夹。显示错误消息,说另一个进程正在使用它。看起来好像手柄保留在选定的文件夹上。请给我一个解决方案。microsoft.win32.savefiledialog问题在Windows XP中

以下是我保存文件对话框代码:

SaveFileDialog fileDialog = new SaveFileDialog(); 

fileDialog.DefaultExt = !string.IsNullOrEmpty(this.DefaultExtension) ? this.DefaultExtension : "*.*"; 
fileDialog.Filter = !string.IsNullOrEmpty(Filter) ? Filter : "All Files|*.*"; 
fileDialog.FileName = !string.IsNullOrEmpty(this.FileName) ? this.FileName : string.Empty; 
fileDialog.InitialDirectory = !string.IsNullOrEmpty(this.DefaultPath) ? this.DefaultPath : string.Empty; 

if (fileDialog.ShowDialog().Value == true) 
{ 
    fileName = fileDialog.FileName; 
} 
else 
{ 
    fileName = string.Empty; 
}    

return fileName; 

编辑:

这是很常见的System.Windows.Forms的同时,我试过很多,问题happnes当我选择从一个文件夹文件对话窗口。之后不需要做任何事情,只需选择一个文件夹表单保存文件对话框。该文件夹无法删除。

+0

请注意,您不显示保存文件的代码...请确认问题与保存代码本身无关(即,即使您没有保存文件,只是获取文件名,仍然会看到文件夹被锁定) 。 –

+0

@Sayse当我试图添加使用它给出的错误说microsoft.win32.savefiledialog应该实现IDisposable接口。 –

+0

@AlexeiLevenkov只有当我将文件保存在选定的文件夹 –

回答

3

这是完全正常的。它不是打开目录对象的另一个进程,它是您的进程。您的代码使目录成为您的流程的默认工作目录。您可以从Environment.CurrentDirectory属性中看到的东西。

SaveFileDialog.RestoreDirectory属性设置为true以避免这种情况。