vb.net设置异步处理 vbnet doevent( 二 )


接下来我们看看stateObject , 这个东西被称为状态对象 。于是大家就可能奇怪了:那个ar不也是状态吗?实际上stateObject是一个留给用户使用的东西,BeginXXX/EndXXX根本就不使用 。这个stateObject会被装到ar的AsyncState里面,也就是说这个stateObject可以随时通过访问存根(BeginXXX的返回值)或者回调函数里的ar得到,你完全没必要额外的保存到什么地方,更不需要费神的去考虑如何和你的某个异步操作对应起来 。说了半天 , 这个东西有什么用呢?你想怎么用就怎么用呗,发挥一下你的想象力 。比如说,你可以保存这是第几次操作,或者在多个异步操作之间要同步的时候可以作为信号旗,再或者直接是操作这个异步操作的对象(x.BeginXXX的时候将x传递到stateObject参数上) 。
【vb.net设置异步处理 vbnet doevent】第一种用法有点多余,第二种用法有点复杂,第三种我用得最多 。因为你很可能在协一个服务端,而服务段必须能够响应多个客户端 , 这决定了必须用异步 。同时,对于多个客户端必然有多个对象 , 例如网络连接的时候可能是Socket 。而实际上处理的方法或者协议是和具体哪个客户端没有关联的,因此我们只需要一套处理程序就够了 。这个时候第三种用法就很有用处 , 我们完全可以把代码写成这样:
SubDataReceived(ByValarAsIAsyncResult)
ar.AsyncState.EndReceive(ar)
ar.AsyncState.BeginReceive(...,ar.AsyncState)
EndSub
这样就不需要额外的数据结构去记录有那些正在活动的对象了 。
求深入浅出讲解VB.NET下利用Async和Await实现异步的方法 。run需要一个action方法 。
这个方法用于用后台进程执行占用大量CPU的工作,你的for代码段应该写在里面 。
我没用过这个,粗略看了一下资料 , 实际情况与他的实例不太一样,Dim a As Task(of Boolean)=Await Doo(),直接提示错误 , 正确用法是去掉await 。
解决以上两个问题,测试运行通过 。(一个文本框滚数字,另一个打字无压力)
其实你的要求,不需要这么高级 。多线程应该可以 。
关于vb.net设置异步处理和vbnet doevent的介绍到此就结束了,不知道你从中找到你需要的信息了吗 ?如果你还想了解更多这方面的信息,记得收藏关注本站 。

推荐阅读