我现在做一个定时下载程序,一次下载大约需要10秒钟;
而且在下载时,在页面上点什么都没反应,就像死机了一样,
但是10秒后,下载结束就可以正常操作。我想实现的就是:如何在下载时不影响别的操作,就是下载照做,在后台工作;
而页面上可以进行别的操作,互不影响。我刚学C#没多久,这个应该是个多线程的问题吧,希望高手能给点方法,最好给点代码提示。
而且在下载时,在页面上点什么都没反应,就像死机了一样,
但是10秒后,下载结束就可以正常操作。我想实现的就是:如何在下载时不影响别的操作,就是下载照做,在后台工作;
而页面上可以进行别的操作,互不影响。我刚学C#没多久,这个应该是个多线程的问题吧,希望高手能给点方法,最好给点代码提示。
{
Thread scanThread = new Thread(new ThreadStart(ScanWebsite));
scanThread.Start();
}public void ScanWebsites()
{
//code
}
然后循环一次,一个个start就ok了
private void BeginScan()
{
Thread scanThread = new Thread(new ThreadStart(ScanWebsite));
scanThread.Start();
}public void ScanWebsites()
{
while(flag){
//code
}
}
把你的下载用的代码写在ScanWebsites()里就行了!!让这个线程一直循环着就可以了!在一开始时调用BeginScan()函数来启动线程!我想楼主每隔10分钟就下载一次,用的应该是timer控件吧,用了多线程,这控件也省了,只要定一个全局变量可记录上次的下载时间!,在线程中判断当前时间与上次下载时间的间隔,多于10分钟就开始下载!
http://blog.csdn.net/zhzuo/archive/2004/06/10/22037.aspx
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没反应呀,好象线程只执行了一次?????????
{while(true)
{
Thread.Sleep(20000);
Label1.Text=ThreadTime.ToString();
}
}