问下,很简单的问题啊,为什么会这样捏,我在timer控件的事件里对FTP服务器上文件夹的情况做了下判断,如果我要下载的文件夹名跟服务器上的文件夹名相同,就下载,就这个简单的东西界面就卡着不动了,我郁闷看下代码
 private void btnStartDown_Click(object sender, EventArgs e)//下载按钮方法
        { 
            
            if (txtDownPath.Text == "")
              {
                  MessageBox.Show("请选择保存文件夹的路径");
              }
        else
            {                timerDownLoad_Tick(sender, e);
            }
//下载按钮
        private void timerDownLoad_Tick(object sender, EventArgs e)//下载timer
        {
            timerDownLoad.Enabled = false;
            timerDownLoad.Enabled = true;
            DownLoad();
         
        }private void DownLoad()    //下载方法代码段
        {
            string[] file = client.file();
            if (file.Length == 3)
            {
                DownLoad();
            }
            else
            {
                FTPClient ftp = new FTPClient(txtFTPIP.Text, DateTime.Now.ToShortDateString().ToString(), txtFTPUser.Text, txtFTPPwd.Text, 21);
                if (ftp.Connected)   //判断是否已经连接成功
                {
                    string downfile = txtDownPath.Text;                    saveFile = downfile + "\\" + path;
                    if (!Directory.Exists(saveFile))
                        Directory.CreateDirectory(saveFile);
                    //本地创建文件夹                    btnStartUp.Enabled = false;
                    btnStartDown.Enabled = false;
                    //获取本地保存文件的目录
                    writeLog("开始下载");
                    ftp.Get("", saveFile);//设置要下载的文件路径
                    writeLog("文件夹下载成功");
                  client.RmDir("2010-5-24");
                    ftp.DisConnect();        //关闭连接                }
                else
                {
                    writeLog("连接服务器失败,,尝试新连接....");
                }
            }
        }

解决方案 »

  1.   

    那个
      string[] file = client.file();
                if (file.Length == 3)
     {
    }//这是判断服务器上文件夹的大小,用来判断服务器上是否有文件的,如果有文件file.length会大于3,没有就=3,如果没有就继续执行 DownLoad();
    方法
      

  2.   

    你在download()中下断点,单步跟踪
      

  3.   

    if (file.Length == 3)
                {
                    DownLoad();
    条件为真时,死循环
      

  4.   

    那我的目的怎么达到呢,我这是自动检测的,如果服务器上有文件存在就要下载,如果不存在(file.length==3)就继续检测啊,怎么办捏
      

  5.   


    private void timerDownLoad_Tick(object sender, EventArgs e)//下载timer
            {
                timerDownLoad.Enabled = false;
                timerDownLoad.Enabled = true;
                GetFileInfo();
            }private void GetFileInfo()    //下载方法代码段
            {
                string[] file = client.file();
                if (file.Length == 3)
                {
                    DownLoad();
                }private void DownLoad()    //下载方法代码段
            {
                    FTPClient ftp = new FTPClient(txtFTPIP.Text, DateTime.Now.ToShortDateString().ToString(), txtFTPUser.Text, txtFTPPwd.Text, 21);
                    if (ftp.Connected)   //判断是否已经连接成功
                    {
    }
    }
      

  6.   

    不是这样的啦我就想当 file.length==3的时候就是服务器上不存在文件夹的时候,也就是不能下载,就继续判断file.length的值,我这里file.length==3的时候又调用getfileinfo这个方法判断就好了,貌似是死循环,但是怎么办捏