首页 > 娱乐 > 多线程、Socket技术及委托技术的
多线程、Socket技术及委托技术的
网上收集 2007/12/18 18:53:03 (395)
这几天忙着开发一个竞赛软件,要求一个前端的显示,幕后*控前端显示给竞赛者,这就要用到多线程、Socket技术及委托技术。于是在网上找了一些关于Socket技术的资料,加上学过的线程的一点知识,开始我的整合编程。深知自己一直都对VB没怎么兴趣的,感觉他不是真正的编程,VB是易学,易懂,易理解,想想还是花点时间学下,感觉有一天会有用的,于是一时心血来潮,凭着自己埋头苦干的边学东西边做软件,还好有其他编程软件的一点经验吧,没走偏了,一直都很想写个文章做个纪念,最令我深刻的、学到最有用的东西也就是多线程、Socket技术、委托技术。现在开始我的VB编程:
  第一步:什么是多线程?如果一个窗体里创建一个线程,他就是一个多线程,是两个线程的多线程,窗体显示及控件的管理本身就有一个线程控件,叫UI线程(自己理解应该是用户界面的线程吧!!呵呵),是主线程,而创建的线程则是子线程。那么什么是Socket呢?Socket就是套接字,通过Socket,有可以作为Server端的Socket,也有作为Client端的Socket,服务端开启一个子线程来监听客户端发来的所有信息,并可以发送回信息,实现数据双向通信。聊天软件很多都是基于Socket的编写出来的。好了,什么是委托技术呢?简单的说是就有一个人,他没有能力完成想要做的事,出钱委让给别人去完成,像某某公司经理要求你开发个竞赛软件,他本身没有能力去完成这样的事,所以出钱让你去完成。好了,明白了是什么后,接下来写下一些代码吧!!!!!
  第二步:多线程例子
  VB中多线程可以传值
图片点击可在新窗口打开查看Dim th as System.Threading.Thread
图片点击可在新窗口打开查看th = New System.Threading.Thread(Addressof 对象名(或类名).方法)
图片点击可在新窗口打开查看对象名(或是类名).属性 = 值       '通过这样可以实现线程传参
图片点击可在新窗口打开查看.......
图片点击可在新窗口打开查看th.start()
  也可以返回值(通过委托技术实现),在做竞赛软件时,遇到一个问题,当在子线程里面去New 一个Form或是控件时,都会使窗体出现假死,于是在网上找了一些资料及查MSDN后才知道,原来子线程是没有能力去*控UI线程的控件,这里只能用委托技术,--------------------------这个是很好的一个说明==========呵呵=========
图片点击可在新窗口打开查看Dim th as System.Threading.Thread
图片点击可在新窗口打开查看th = New System.Threading.Thread(Addressof 方法名1)
图片点击可在新窗口打开查看th.start()
图片点击可在新窗口打开查看
图片点击可在新窗口打开查看Delegate Sub DelegateHandler(ByVal 参数 as String)   '声明一个委托
图片点击可在新窗口打开查看private Sub 方法名1()
图片点击可在新窗口打开查看    dim dh as DelegateHandler = New DelegateHandler(AddressOf 方法名2)
图片点击可在新窗口打开查看图片点击可在新窗口打开查看    me.invoke(dh, new Object()...{"value"})
图片点击可在新窗口打开查看End Sub
图片点击可在新窗口打开查看
图片点击可在新窗口打开查看private Sub 方法名2(ByVal str as String)
图片点击可在新窗口打开查看    '被委托给的方法    ,处理委托后的数据
图片点击可在新窗口打开查看
图片点击可在新窗口打开查看End Sub
图片点击可在新窗口打开查看
  第三步:Socket技术例子
  (1)服务器端
  Socket是基于线程而创建的,在UI线程下创建子线程,线程方法中用一个死循环在监听客户端的信息,第收到一信息后,委托给UI线程方法去处理。示例代码:
图片点击可在新窗口打开查看'声明一个线程
图片点击可在新窗口打开查看Dim t As System.Threading.Thread
图片点击可在新窗口打开查看 t = New Thread(AddressOf WaitData)
图片点击可在新窗口打开查看 t.Start()

 

   Dim s As Socket
图片点击可在新窗口打开查看图片点击可在新窗口打开查看    Public Sub WaitData()Sub WaitData()
图片点击可在新窗口打开查看        s = New Socket(AddressFamily

阅读(395) (责任编辑:城市网)
关于我们 - 联系我们 - 网站荣誉 - 广告服务 - 版权声明 - 网站地图
Copyright© 2007-2018 bj1.com.cn 首都热线 版权所有 QQ:165687462
中国·北京 粤ICP备14047004号-20