C# 要删除文件时出错
我有一个web应用程序,可以创建Access数据库。 当我创建这个数据库时,我首先必须删除文件(如果它存在),然后重新创建它C# 要删除文件时出错,c#,ms-access,process,createfile,C#,Ms Access,Process,Createfile,我有一个web应用程序,可以创建Access数据库。 当我创建这个数据库时,我首先必须删除文件(如果它存在),然后重新创建它 if (File.Exists(DataSourcePath + fileName)) File.Delete(DataSourcePath + fileName); string cnnStr = @"Provider=Microsoft.Jet.OLEDB.4.0; Data Sourc
if (File.Exists(DataSourcePath + fileName))
File.Delete(DataSourcePath + fileName);
string cnnStr = @"Provider=Microsoft.Jet.OLEDB.4.0; Data Source=" + DataSourcePath + fileName + "; Jet OLEDB:Engine Type=5";
var catType = Type.GetTypeFromProgID("ADOX.Catalog");
object o = Activator.CreateInstance(catType);
catType.InvokeMember("Create", BindingFlags.InvokeMethod, null, o, new object[] { cnnStr });
OleDbConnection cnn = new OleDbConnection(cnnStr);
var cmd = cnn.CreateCommand();
cnn.Open();
cmd.CommandText = "CREATE TABLE TblInfoCompany (Name TEXT, Family TEXT)";
cmd.ExecuteNonQuery();
cmd.Dispose();
cnn.Close();
cnn.Dispose();
当我重新创建此文件时,可能会出现异常。
异常显示:“该文件用于另一个进程。”
请帮助我关闭此过程或找到解决此问题的方法
谢谢。保存正在使用的文件的过程可能是web应用程序本身。由于关闭/打开mdf文件不是由您直接处理的,而是由Jet引擎处理的,所以并不容易。我建议PInvoke指定系统功能:
- null作为第二个参数,表示要删除
作为dwFlags,这意味着操作将在下次系统重新启动时完成MOVEFILE\u DELAY\u直到重新启动
我知道这不是最好的解决方案,因为服务器不会经常关闭,但可能是删除无法关闭Elsway的锁定文件的更简单解决方案。显示相关代码。更直截了当地引用错误,没有涉及“开放进程”。您的连接可能是池连接,因此关闭它是不够的。看见