110,539
社区成员
发帖
与我相关
我的任务
分享
protected void s(){
thread = new System.Threading.Thread(
new System.Threading.ThreadStart(download));
thread.Start();
}
protected void download()
{
//进行多文件下载操作
SFTP.download(drive);
}
private System.Threading.Timer timerlisten;
protected void start()
{
s(); //这里我启用一个线程
timerlisten = new System.Threading.Timer(new TimerCallback(displayProgess), this, 5000, 100);
//我又启用一个timer的多线程,来监控单个文件下载的进度
}
//我想知道怎么才能监控到下载进程的结束,我试过在里面加上
thread.join();
//但是线程就会阻塞在那了,timer都走不了,必须得等那个下载进程走完,这不是我想要的效果
//我也试过用其他办法
AutoResetEvent events = new AutoResetEvent(false);
List<AutoResetEvent> Events = new List<AutoResetEvent>();
Events.Add(events);
WaitCallback wait = new WaitCallback(s);
ThreadPool.QueueUserWorkItem(wait);
if (WaitHandle.WaitAll(Events.ToArray()))
{
MessageBox.Show("2");
}
//还是不行,求解= =
AutoResetEvent events = new AutoResetEvent(false);
WaitCallback wait = new WaitCallback(startagain);
ThreadPool.QueueUserWorkItem(wait,events );
thread = new System.Threading.Thread(
new System.Threading.ThreadStart(delegate
{
while(true ){
if (events.WaitOne(-1, true))
{
events.Set();
MessageBox.Show("2");
break;
}
}
}));
thread.Start();