VB.NET实现任务异步等待功能
来源:互联网 发布:染上你的颜色镜头数据 编辑:程序博客网 时间:2024/05/16 17:29
标题表达不太清楚,要实现的功能是这样的:
现在有类似如下的一个sub,里面依次调用了另外两个sub
那么问题来了,当work1执行后,webbrowser中的网页随即开始加载,但是由于页面内容涉及到了ajax等信息,因此在尝试使用其DocumentComplete事件判断页面是否加载完成纷纷失败告终后,决定想用指定等待时间的方式来解决,那么就需要让work2在执行之前等待一会儿,好,现在问题来了,我在work2调用之前加入thread.sleep(1000)的话,直接会导致整个form包括webbroswer一起都暂停了,ajax异步加载当然也暂停了,结果等于是白搭.想用多线程来实现吧,因为涉及到对主线程控件的调用,又是各种不行,查了许多资料,都说要用委托来实现,研究了一下下,好麻烦...这显然不符合用vb这么高端语言的风格嘛,不要麻烦,要简单粗暴有效,于是发现了原来vb.net中自带的backgroundworker就可以搞定这个任务!实现方法如下:
从工具箱中拖一个backgroundworker到窗体里先,设置backgroundworker的dowork事件内容写成thread.sleep(1000),workcomplete事件里面的内容写成之前work2的内容,然后在dowork中执行完work1之后调用backgroundworker.RunWorkerAsync方法,最终实现的效果便是:
work1先开始执行(页面尚未载入完毕),backgroundworker开始异步执行(其实也可以理解backgroundworker是个封装了的线程),因为backgroundworker执行的主体内容是thread.sleep,而其又是异步执行的,所以并不会导致form假死的现象,在thread.sleep完毕后又会触发workcomplete事件从而执行之前work2中想要执行的过程,妥妥的把问题解决了!虽然绕了一大圈,而且感觉这个方法也比较笨,不过确实实实在在的解决了之前的问题,如果还有其他更好的解决方法,还望赐教!
现在有类似如下的一个sub,里面依次调用了另外两个sub
sub doWork() work1() '该sub过程中其实是让一个webbrowser控件载入指定网页 work2() '分析网页中的数据并进行相应的操作 end sub
0 0
- VB.NET实现任务异步等待功能
- 数据加载等待页面的VB.NET代码实现
- VB.Net较为特殊功能实现
- VB.net实现图像验证码功能
- vb.net 实现javascript中的Eval功能
- vb.net实现验证码功能
- VB.net+三层架构 实现登录功能
- VB.NET中实现Drop拖放功能
- VB.NET Timer实现功能细讲
- Vb.net/VB 声明API函数实现父窗体功能
- Vb.net/VB 声明API函数实现父窗体功能
- 使用NSRunloop等待异步任务完成
- 使用NSRunloop等待异步任务完成
- 使用NSRunloop等待异步任务完成
- 使用NSRunloop等待异步任务完成
- C#等待句柄实现异步
- vb.net异步操作示例
- VB.NET 串口异步访问
- 面向对象(下)
- STL 中 mem_fun 和 mem_fun_ref 的用法
- 实现 strlwr
- 15-11-03工作感悟
- Strusts2配置问题
- VB.NET实现任务异步等待功能
- 【黑马程序员】多态、抽象类、接口——Java复习笔记
- 实现 strupr
- Callable从任务中产生返回值
- win7 32bit下安装mysql server
- 使用函数输出一个整数的逆序数
- Nginx 限流
- 关于android R.layout 中找不到已存在的布局文件问题的解决
- Android中实现Bitmap在自定义View中的放大与拖动