【发布时间】:2015-07-13 16:55:53
【问题描述】:
我正在使用 c# 使用此代码进行 FTP 文件上传
while(true)
{
if(condition == true)
{
Process[] proc = Process.GetProcessName("ThirdPartyApp");
if(proc.Length <0 )
{
var file = Process.GetProcess().Where(pr=>pr.ProcessName == "ThirdPartyApp")
foreach(var process in file)
{
process.kill(); // Third party application stopped
}
if(File.Exists(filename))
{
using (System.Net.WebClient client = new System.Net.WebClient())
{
client.Credentials = new System.Net.NetworkCredential("username", "password");
client.UploadFile(ftpServer + new FileInfo(filename).Name, "STOR", filename);
}
File.Delete(filename);
Process.Start("ThirdPartyApp");
}
}
}
}
我的程序持续运行。在指定时间,它将文件上传到服务器。我的程序启动后,第一次成功将文件上传到服务器,但在另一个时间间隔,第二次,它给出了这个异常。
我不明白为什么它在第一次循环运行时出错,但为什么它在第二次循环时出错。
The process cannot access the file 'E:\TYV.csv' because it is being used by another process.
删除文件后,会立即创建一个新文件。在第二次运行时,哪个进程正在使用该文件?是我自己的应用吗?
为什么第一次没有锁定?
谢谢
【问题讨论】:
-
被投诉的文件是在客户端还是服务器上?
-
它在客户端上,我在服务器上发送它。第三方应用程序正在创建它。在上传之前,我先杀死第三方应用程序然后上传,然后再次启动第三方应用程序。
-
如果您可以访问服务器,您可以使用解锁器查看哪个进程正在锁定文件。 filehippo.com/download_unlocker。但我认为这是您的申请。
-
你为什么使用
while(true)?尝试将上传代码放在不同的方法中,而不是在 while 循环中,并使用 Timer 而不是 while 循环,始终为真。 -
我不允许在服务器上上传任何软件。此问题仅出现在服务器上,而不出现在我的系统上。定时器也有同样的问题。
标签: c#