我现在做一个定时下载程序,一次下载大约需要10秒钟;
而且在下载时,在页面上点什么都没反应,就像死机了一样,
但是10秒后,下载结束就可以正常操作。我想实现的就是:如何在下载时不影响别的操作,就是下载照做,在后台工作;
而页面上可以进行别的操作,互不影响。我刚学C#没多久,这个应该是个多线程的问题吧,希望高手能给点方法,最好给点代码提示。

解决方案 »

  1.   

    我正准备做这个  推荐你去看下  wrom的线程手册
      

  2.   

    private void BeginScan()
    {
    Thread scanThread = new Thread(new ThreadStart(ScanWebsite));
    scanThread.Start();
    }public void ScanWebsites()
    {
    //code
    }
      

  3.   

    如果想多开几个线程的话,就换成Thread[]就好了
    然后循环一次,一个个start就ok了
      

  4.   

    rachy(黑色雨) 已给出了代码,
    private void BeginScan()
    {
    Thread scanThread = new Thread(new ThreadStart(ScanWebsite));
    scanThread.Start();
    }public void ScanWebsites()
    {
    while(flag){
    //code
    }
    }
    把你的下载用的代码写在ScanWebsites()里就行了!!让这个线程一直循环着就可以了!在一开始时调用BeginScan()函数来启动线程!我想楼主每隔10分钟就下载一次,用的应该是timer控件吧,用了多线程,这控件也省了,只要定一个全局变量可记录上次的下载时间!,在线程中判断当前时间与上次下载时间的间隔,多于10分钟就开始下载!
      

  5.   

    参考,
    http://blog.csdn.net/zhzuo/archive/2004/06/10/22037.aspx
      

  6.   

    private DateTime ThreadTime;
    private void FrmMain_Load(object sender, System.EventArgs e)
    {
    ThreadTime=DateTime.Now;
    BeginScan();
    }private void BeginScan()
    {
    Thread scanThread = new Thread(new ThreadStart(ScanWebsites));
    MessageBox.Show("AAAAAAAAAAAAAA");
    scanThread.Start();
    }public void ScanWebsites()
    {
    MessageBox.Show("BBBBBBBBBBBBBBBBBBBBB");
      while(ThreadTime.AddMilliseconds(20)<DateTime.Now)
      {
      ThreadTime=DateTime.Now;
      Label1.Text=ThreadTime.ToString();
      }
    }
    怎么Label1没反应呀,好象线程只执行了一次?????????
      

  7.   

    public void ScanWebsites()
    {while(true)
      {
      Thread.Sleep(20000);  
      Label1.Text=ThreadTime.ToString();
      }
    }