资讯

精准传达 • 有效沟通

从品牌网站建设到网络营销策划,从策略到执行的一站式服务

vb.net线程的概念,vbnet thread

VB6.0就是VB。NET吗

VB.NET是微软为了统一.NET而新开发的语言,VB.NET沿用了VB6的部分语法,是VB 6.0的后继版本,但是并不是VB6的升级版。

雨山网站制作公司哪家好,找成都创新互联!从网页设计、网站建设、微信开发、APP开发、成都响应式网站建设公司等网站项目制作,到程序开发,运营维护。成都创新互联从2013年创立到现在10年的时间,我们拥有了丰富的建站经验和运维经验,来保证我们的工作的顺利进行。专注于网站建设就选成都创新互联

VB.NET除了在语法上还保留VB6.0原有的踪影以外,二者几乎在90%以上保持相似或相同。但在其他很多方面,VB.NET都和VB6.0截然不同。正是这些不同点,才使得VB.NET功能更强大,更有生命力,但同样也为VB6.0程序员转型为VB.NET程序员带来了困难。因为VB.NET提出了很多新的功能、概念和观点,掌握VB.NET不仅要掌握语法,还需要理解并运用这些新的功能、概念和观点。当然也需要掌握.Net框架,理解CLR(CommonLanguage Runtime,通用语言进行时)。

总结下面几个二者不同点:

VB.NET是完全面向对象和后现代化的语言(JAVA独具的新概念)

VB.NET是自由线程语言

VB.NET的运行速度比VB6要快

VB.NET从语法上来说更加紧凑和具有规律性

VB.NET开放了界面设计代码

VB.NET可以更好地集成微软的新产品和新技术

VB.NET拥有更加强大附属组件

VB.NET拥有移动开发的能力

VB.NET封装的类功能强大,不需要额外使用API

VB.NET的开发环境更加紧密与集成化,与同类语言(如C#)连接更紧密

VB.NET目前还受到微软的更新和支持

VB.NET必须运行在.NET的虚拟机上

VB.NET要更加难学

VB.NET中的多线程和委托是什么关系? 能不能给我一个通俗易懂的范例,谢谢

委托,Delegate

就是让你处于这个线程里时,委托另一个线程去执行一些动作

我简单举一个写richtextbox的例子:

////////////////////////////////////////////

'创建一个名为 MySubDelegate 的委托。

Delegate Sub MySubDelegate(ByVal txt As String)

'写信息到富文本主窗口

Private Sub txtW(ByVal txt As String)

Dim msgd As New MySubDelegate(AddressOf Me.txtW1)

Dim arg(0) As Object

arg(0) = txt

Me.Invoke(msgd, arg)

End Sub

'委托指向

Private Sub txtW1(ByVal txt As String)

Me.RichTextBox1.AppendText(txt)

End Sub

/////////////////////

这样,你在多线程应用时,在其他线程里用txtW(str)来写richtextbox,就不会产生错误了。不然,直接垮线程写richtextbox,可能会出现和UI线程的冲突。

VB中的多线程

定义:

Dim g_ReceiveThread As System.Threading.Thread

创建:

g_ReceiveThread = New System.Threading.Thread(AddressOf ReceiveProc)

开始:

g_ReceiveThread.Start()

结束:

Dim waitStart As Long = My.Computer.Clock.TickCount + 1000 ‘超时

While (g_ReceiveThread.ThreadState System.Threading.ThreadState.Stopped)

If My.Computer.Clock.TickCount = waitStart Then

g_ReceiveThread.Abort()

End If

Application.DoEvents()

End While

VB.NET 简单多线程

多线程一般是不推荐用的,因为线程之间如果有共享资源的话会引起竞争,需要加锁处理;而且线程间没有时序关系,所以你在调试中可能会出现异步处理结束顺序与开始处理顺序不一致的情况(我在调试中已经发现该问题)。

针对你提出的这个问题,采用了多线程处理,利用的是BackgroundWorker也就是异步处理控件进行了处理。

代码已经经过调试通过。欢迎交流,如有问题,留下QQ或其他联系方式。

代码如下,并附程序截图。

‘---------------------------------------------------

Imports System.ComponentModel '导入异步控件命名空间

Public Class Form1

Private howmany As Integer = 10

Private AnalysisNumber(0 To howmany - 1) As BackgroundWorker

Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click

ListBox1.Items.Clear()

creatNewBackgroundWorker()

addHandle()

startWork()

End Sub

Private Sub creatNewBackgroundWorker()

For i As Integer = 0 To AnalysisNumber.Length - 1

AnalysisNumber(i) = New BackgroundWorker

Next

End Sub

Private Sub addHandle()

For i As Integer = 0 To AnalysisNumber.Length - 1

AddHandler AnalysisNumber(i).DoWork, AddressOf AnalysisNumber_DoWork

AddHandler AnalysisNumber(i).RunWorkerCompleted, AddressOf AnalysisNumber_RunWorkerCompleted

Next

End Sub

Private Sub startWork()

For i As Integer = 0 To 9

Dim temp(0 To 9) As Integer

For j As Integer = 1 To 10

temp(j - 1) = 10 * i + j

Next

AnalysisNumber(i).RunWorkerAsync(temp)

Next

End Sub

Private Sub AnalysisNumber_DoWork(ByVal sender As Object, ByVal e As System.ComponentModel.DoWorkEventArgs)

Dim data As Integer()

data = CType(e.Argument, Integer())

Dim temp As Integer

For i As Integer = 0 To data.Length - 1

temp = data(i)

data(i) = temp * temp

Next

e.Result = data

End Sub

Private Sub AnalysisNumber_RunWorkerCompleted(ByVal sender As Object, ByVal e As System.ComponentModel.RunWorkerCompletedEventArgs)

Dim data As Integer()

data = CType(e.Result, Integer())

For i As Integer = 0 To data.Length - 1

ListBox1.Items.Add(data(i))

Next

End Sub

End Class

VB.NET 多线程运行问题

多线程是用于处理复杂项目的

打个比方

你的主程序线程A中有个循环,由于代码是一行行走的,所以循环结束前下面的代码无法运行,而此时主界面的反应就类似卡死的样子,你点击按钮也没有反应,因为主线程在忙着循环呢,所以对按钮的事件代码要等待了,如果要避免这种情况,就要用到多线程,另开一个新线程专门用来执行循环代码,主界面就不会卡死了,只要在循环结束后将结果传回主线程调用就可以了,再复杂点要涉及到委托,控制了

按你的要求其实你的代码用不到多线程,只要把sleep放到两段代码中间就可以了。

新线程结束用thread.abort()


分享文章:vb.net线程的概念,vbnet thread
文章源于:http://www.cdkjz.cn/article/hcpsoo.html
多年建站经验

多一份参考,总有益处

联系快上网,免费获得专属《策划方案》及报价

咨询相关问题或预约面谈,可以通过以下方式与我们联系

大客户专线   成都:13518219792   座机:028-86922220