首页 新闻 会员 周边 捐助

新手请教,关于异步处理的程序,初次发帖,分少,请谅解!

0
悬赏园豆:10 [已解决问题] 解决于 2010-07-10 16:31

最近在编写一个程序,主要实现了从多个Ftp站点自动下载数据,程序结构如下:

Private void btnStartClicked()

{

       For()

       {

              //代码多,不一一表示了,主要是对每个站进行遍历,实现每个站数据的下载

              //其中调用了下面这个函数,这个函数实现单个站的数据下载。

              downSingleSite(string [] siteInfo);

}

}

 

Private void downSingleSite(string [] siteInfo)

{

/*这个函数先根据提供的站点控制信息访问网络,获取下载文件的信息,并按条件进行筛选,获取需要下载的文件信息并存入fileInfoList中。

Foreach(string singleFile in fileInfoList)

{

       启动一个线程执行数据下载功能;

}

//如果有10个文件需要下载,那么就启动了10个线程进行下载。

       While()   //用于对这几个线程执行是否完成进行判断.

       {

              如果没完成

Thread.sleep(3000);

}

}

在以上程序中,我的程序能正常下载数据,但是由于在窗口服务线程中执行了这一数据下载过程,在这一服务未完成之前,其他窗口消息无法得到响应因此,当单击窗口界面是,出现程序无响应的显示,,而我在程序中使用了sleep()是程序睡眠,但仍然没有效果,不知是何原因。请各位高手不吝赐教,我该如何改变我的程序结构,请稍微详细一点,我刚入门,知识还比较欠缺。

hmqr的主页 hmqr | 初学一级 | 园豆:147
提问于:2010-07-10 13:57
< >
分享
最佳答案
0

用 BackgroundWorker 控件。具体可见 MSDN。

收获园豆:5
Old | 初学一级 |园豆:165 | 2010-07-10 14:24
其他回答(2)
0


淘衣服装网: goo6.taobao.com  主要以经营女装为主,日韩服装、潮流服装、台湾时尚服装,均为热销款式,公司5年苦心经营,淘宝三皇冠信誉店,“时尚之都”服装开业大吉,两件包邮,买衣服送手机,尊享会员等等各类促销优惠活动,赶快行动起来~
款式时尚,价格合理,实物拍摄,质量保证。每个星期都有新款上.


销售热线:400-666-8246
         
在线客服QQ: 97080218

在线旺旺客服:罗昭欣靓
     
网址: http:// goo6.taobao.com

时尚之都优米达 | 园豆:205 (菜鸟二级) | 2010-07-10 15:54
0

判断是否完成的While循环是在窗体的主线程中运行的,窗口当然会失去响应了。可以再启动一个线程执行判断。或用用 BackgroundWorker 控件

收获园豆:5
luotong | 园豆:4 (初学一级) | 2010-07-10 16:27
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册