void ReadWebDir(string RemotePath, string username, string password, string LocalPath)
{
List<string> DirName = new List<string>(); DirName.Add(RemotePath); if (DirName.Count > 0)
{
for (int i = 0; i <= DirName.Count - 1; i++)
{
FtpWebRequest request = (FtpWebRequest)WebRequest.Create(DirName[i]);
request.Credentials = new NetworkCredential(username, password);
request.Method = WebRequestMethods.Ftp.ListDirectoryDetails;
FtpWebResponse response = (FtpWebResponse)request.GetResponse();
StreamReader sr = new StreamReader(response.GetResponseStream(), Encoding.Default);
while (!sr.EndOfStream)
{
判断是文件,还是文件夹的代码段
}
sr.Close();
}
}上面是我用于下载ftp服务器上 网站文件 的遍历程序。我现在想开启多个线程,同时下载 其他的更新程序。 于是,创建了两个相同的过程,分别命名为 ReadDBDir,ReadOtherDir. 然后 开启了三个线程 t1,t2,t3,分别指向这三个过程。现在的问题是,每次开启三个线程后,在FtpWebResponse response = (FtpWebResponse)request.GetResponse();这句上就会报找不到文件的错误。但在我测试用的FTP文件夹上,文件是存在的。我觉得,开启三个线程后,由于三个线程都是指向自己的过程,应该不会出现线程间竞争的问题。所以不知道怎么回事了
{
List<string> DirName = new List<string>(); DirName.Add(RemotePath); if (DirName.Count > 0)
{
for (int i = 0; i <= DirName.Count - 1; i++)
{
FtpWebRequest request = (FtpWebRequest)WebRequest.Create(DirName[i]);
request.Credentials = new NetworkCredential(username, password);
request.Method = WebRequestMethods.Ftp.ListDirectoryDetails;
FtpWebResponse response = (FtpWebResponse)request.GetResponse();
StreamReader sr = new StreamReader(response.GetResponseStream(), Encoding.Default);
while (!sr.EndOfStream)
{
判断是文件,还是文件夹的代码段
}
sr.Close();
}
}上面是我用于下载ftp服务器上 网站文件 的遍历程序。我现在想开启多个线程,同时下载 其他的更新程序。 于是,创建了两个相同的过程,分别命名为 ReadDBDir,ReadOtherDir. 然后 开启了三个线程 t1,t2,t3,分别指向这三个过程。现在的问题是,每次开启三个线程后,在FtpWebResponse response = (FtpWebResponse)request.GetResponse();这句上就会报找不到文件的错误。但在我测试用的FTP文件夹上,文件是存在的。我觉得,开启三个线程后,由于三个线程都是指向自己的过程,应该不会出现线程间竞争的问题。所以不知道怎么回事了
应该不会互相影响吧