日期:2014-05-18  浏览次数:20398 次

一个线程的lock应该怎么写!!!
C# code

 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是防止多线程同步的!!!但是现在。。。。。。好头晕!!!

------解决方案--------------------
既然是下载完了再走,为什么要用线程?反正是ASP.NET的又不需要说需要刷新前台页面??
另外,我还真不知道在 ASP.NET中自己的多线程还能否工作。
------解决方案--------------------
up
------解决方案--------------------
asp.net 是可以多线程,不过好像用在这里意义不大吧,
不知道LZ想实现的是不是下载后检测一下图片的大小,看是否下载完了.
------解决方案--------------------
关注
------解决方案--------------------
能否如操作系统一样开若干个P,V进程。