【发布时间】:2011-05-06 21:44:44
【问题描述】:
我的windows服务中有一个方法如下:
System.IO.File.Copy(path, ConfigurationManager.AppSettings["BulkInsertGiftRegisterCreatorDirectory"] + System.IO.Path.GetFileName(path));
Loyalty.Entity.Base.FileInfo file = new Loyalty.Entity.Base.FileInfo();
file.FileName = path;
request.Object = file;
ResponseBase response = new ResponseBase(request);
RequestConnection connection = new RequestConnection("cn");
FileManager fileManager = new FileManager(request, connection);
response = fileManager.OfflineGiftRegisterBulkInsert();
System.IO.File.Delete(ConfigurationManager.AppSettings["BulkInsertGiftRegisterCreatorDirectory"] + System.IO.Path.GetFileName(path));
// here is the part of stored procedure that uses file
SELECT @SCRIPT= 'BULK INSERT GIFT_CARD.GIFT_TEMP'
+' FROM '''
+ @FILE_PATH
+''' WITH ('
+'FIELDTERMINATOR = '','','
+ 'KEEPNULLS'
+');'
我可以手动从文件系统中删除文件,但是这段代码告诉我“糟糕!System.IO.IOException:进程无法访问文件'filename' 因为它正被另一个进程使用。”
我已经在 stackoverflow 和其他地方搜索了类似的问题。但我找不到任何可以帮助我的东西。复制或删除方法返回 void,并且我的代码中没有要处理的流。
我该如何解决?
提前致谢。
【问题讨论】:
-
“做其他事情”部分在做什么?我假设它正在对正在复制/删除的文件做 something 。我觉得这件事在这里很重要。
-
您的 Window 服务是否以与您相同的身份运行?如果没有,可能是 Window 的服务没有删除文件的权限。
-
我调用了一个存储过程,它使用文件的路径批量插入文件包含的行。
-
@anilca:这意味着文件被打开(可能是通过执行存储过程的方法,或者通过存储过程)。确保它已正确关闭。如果您出示您的代码,我们可以帮助您找出问题所在。
-
@ChrisNel52 我正在以 Windows 服务使用的同一用户身份登录。