public void SaveUrlPics(string url, string path, Random ran)
        {
            WebClient wc = new WebClient();
            
            string address = path + "\\" + CreateRandomCode(8) + GetSuffix(path);
            try
            {
//在这里我想把当前线程等待
                wc.DownloadFile(url, address);                wc.DownloadFileCompleted += new System.ComponentModel.AsyncCompletedEventHandler(wc_DownloadFileCompleted);
            }
            catch (Exception ex)
            {
                ListUrl.writeLog(ex.Message);
            }
            finally
            {
                wc.Dispose();
            }
        }        void wc_DownloadFileCompleted(object sender, System.ComponentModel.AsyncCompletedEventArgs e)
        {
            //下载完成后,放走线程。
        }

我希望下载图片是完整的。如果我没有下载完,当前线程就要等待我WebClient 下载完才能走。现在我有点矛盾,本来就是同一个线程,我应该怎么等待,怎么放走???因为lock是防止多线程同步的!!!但是现在好头晕!!!

解决方案 »

  1.   

    既然是下载完了再走,为什么要用线程?反正是ASP.NET的又不需要说需要刷新前台页面??
    另外,我还真不知道在 ASP.NET中自己的多线程还能否工作。
      

  2.   

    asp.net 是可以多线程,不过好像用在这里意义不大吧,
    不知道LZ想实现的是不是下载后检测一下图片的大小,看是否下载完了.
      

  3.   


    我是这样调用这个foreach(string url in list){
    SaveUrlPics(url,param1,param2);
    }这个下载量很大的啊。有的下载成功,有的少了。可能是网络的问题,比如太多了,超时。