private void pbCode_Click(object sender, EventArgs e)
        {
            new Thread(new ThreadStart(GetImage)).Start();
        }        /// <summary>
        /// 验证码
        /// </summary>
        private void GetImage()
        {
            if (this.InvokeRequired)
            {
                DelegatObject c = new DelegatObject(GetImage);
                this.BeginInvoke(c); 
            }
            else
            {
                this.loadCheckImage.Visible = true;
                this.loadCheckImage.Start();
                this.pbCode.Image = Data.BabyHelper.GetImage(HttpHelper.Cookie);
                this.txtCode.Focus();
                this.loadCheckImage.Stop();
                this.loadCheckImage.Visible = false;
            }
        }loadCheckImage,pbCode,txtCode均是控件

解决方案 »

  1.   

    Form的Invoke的实质就是通过windows消息让函数得以在UI线程得以执行.
    你这里的新线程干的就是这样的事:
    告诉UI线程要它去取图片->等待UI线程执行完任务->结束.
    和直接在UI线程里执行没区别当然会卡死.
      

  2.   

    开个新的线程去执行,在执行结束或者需要操作UI的时候才用form的Invko
      

  3.   


    Data.BabyHelper.GetImage(HttpHelper.Cookie);
    在执行这个的时候开线程,象你那样新线程还是返回UI线程来做的
      

  4.   


     class Class1
        {
            private ImageGetThread imageThread;
            private delegate void safetyDele(string url);        public Class1()
            { 
            
            }        public void loadImages()
            {
                imageThread  = new ImageGetThread();
                imageThread.imageLoaded += new ImageGetThread.getImageDele(imageThread_imageLoaded);
            }        void imageThread_imageLoaded()
            {
                //在这里做界面的更新      
            }
                   
        }    class ImageGetThread
        {
            public string imgUrl = "";        public delegate void getImageDele();
            public event getImageDele imageLoaded;        public ImageGetThread()
            { 
                Thread thed = new Thread(new ParameterizedThreadStart(work));
                thed.Start();
            }        public void work()
            { 
                //在这里写你获取IMAGE的代码就行了
                imgUrl = "你要做的事情";
                //获取完毕,激发事件,通知UI部分更新
                imageLoaded();
            }
        }