VB.net线程池示例的简单介绍
VB.net 如何设计多线程运行
Sub Main()
创新互联公司是少有的成都网站制作、做网站、营销型企业网站、小程序开发、手机APP,开发、制作、设计、卖链接、推广优化一站式服务网络公司,从2013年成立,坚持透明化,价格低,无套路经营理念。让网页惊喜每一位访客多年来深受用户好评
Dim thr As Thread
For Pi As Integer=0 To 4 //启用5线程
MulParams =Pi vbTab sFile vbTab dFile vbTab 1 vbTab DelN vbTab cr vbTab cg vbTab cb vbTab IndexI
GlobalParamas(pi)=MulParams .Split(vbTab)
thr=New Thread(AddressOf MyMulThreadCaller)
thr.Start() //启动多线程进程
Application.DoEvents
Next
End Sub
vb.net中如何设置进程的基本优先级
下面的代码示例说明了更改线程优先级的结果。创建两个线程,其中一个线程的优先级设置为 BelowNormal。两个线程在 while 循环中都增加一个变量,并运行一段设定的时间。
Option Explicit
Option Strict
Imports System
Imports System.Threading
Public Class Test
MTAThread _
Shared Sub Main()
Dim priorityTest As New PriorityTest()
Dim threadOne As Thread = _
New Thread(AddressOf priorityTest.ThreadMethod)
threadOne.Name = "ThreadOne"
Dim threadTwo As Thread = _
New Thread(AddressOf priorityTest.ThreadMethod)
threadTwo.Name = "ThreadTwo"
threadTwo.Priority = ThreadPriority.BelowNormal
threadOne.Start()
threadTwo.Start()
' Allow counting for 10 seconds.
Thread.Sleep(10000)
priorityTest.LoopSwitch = False
End Sub
End Class
Public Class PriorityTest
Dim loopSwitchValue As Boolean
Sub New()
loopSwitchValue = True
End Sub
WriteOnly Property LoopSwitch As Boolean
Set
loopSwitchValue = Value
End Set
End Property
Sub ThreadMethod()
Dim threadCount As Long = 0
While loopSwitchValue
threadCount += 1
End While
Console.WriteLine("{0} with {1,11} priority " _
"has a count = {2,13}", Thread.CurrentThread.Name, _
Thread.CurrentThread.Priority.ToString(), _
threadCount.ToString("N0"))
End Sub
End Class
什么是VB 的多线程,谁有这方面的资料
请参考csdn中的vbcon98.chm:
★ 单线程的部件与单元模型
Visual Basic 创建的所有部件都使用单元模型,无论该部件是单线程的还是多线程的。单线程的部件只有一个单元,该单元包含部件提供的所有对象。
这就意味着用 Visual Basic 创建的单线程的 DLL 可以安全地用于多线程的客户端。不过,性能与安全是一对矛盾,这种安全性损失了性能。除了当前的客户端线程之外,其它所有的客户端线程的调用都要等待被调度,就好象这些调用是进程外调用。请参阅“设计线程安全的 DLL”。
线程的所有权
多线程的进程内部件没有自己的线程。如“设计线程安全的 DLL”中所述,定义每个单元的线程都属于客户端。
与此相对的是,多线程的进程外部件可能有一个固定线程数目的线程池,或者为每个外部创建的对象设置一个线程。
★ 设计多线程的进程外部件
您可以利用单元模式进程化,建立多线程的进程外部部件。这种部件提供的对象可以运行在不同的执行线程上。
为了将对象指派到进程外部件中的线程,Visual Basic 提供了三种模型。可以在“工程属性”对话框中设置“通用”选项卡的“无用户界面执行”框,选择其中的一种模型。
线程指派模型 “无用户界面执行”的设置
单一的执行线程 选择“线程池”选项,指定线程数为一。
循环指派线程的线程池 选择“线程池”选项,并指定可用的线程数目。
每个在外部创建的对象有一个属于自己的线程 选择“每个对象的线程”选项。
单一的执行线程
当选择“无用户界面执行”时,单一的执行线程是缺省设置。使用该选项可以编译 Visual Basic 早期版本开发的部件,无需考虑线程。
如果使用“无用户界面执行”选项来重新编译部件,该服务器将不能再显示出消息框,也就无法获得管理员的干预。不过,这种消息可以被记录到 Windows NT 的事件日志(或另外选择的日志文件),请参阅“多线程部件的事件日志”。
循环的线程池
当客户端请求对象时,Visual Basic 使用在线程池的下一个线程上创建所需的对象。当线程到达线程池的尾端时,就从头开始。
vb.net多线程如何返回参数,举个例子,谢谢
Public Class Form1
Public Class SquareClass '把多线程调用的函数封装到类中,通过类事件返回
Public Value As Double
Public Square As Double
Public Event ThreadComplete(ByVal Square As Double)
Public Sub CalcSquare()
Square = Value * Value
RaiseEvent ThreadComplete(Square)
End Sub
End Class
Dim WithEvents oSquare As SquareClass
Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click '多线程返回值测试,当线程运行完成激发事件
oSquare = New SquareClass()
Dim t As New Threading.Thread(AddressOf oSquare.CalcSquare)
oSquare.Value = 30
t.Start()
End Sub
Sub SquareEventHandler(ByVal Square As Double) Handles oSquare.ThreadComplete '响应事件函数
MsgBox("The square is " Square)
End Sub
End Class
求大神指导VB.net 线程 ThreadState 的使用方法 怎么获取线程状态,是否被挂起堵塞停止等等
用time控件啊,获取threadstate后,按指定时间间隔规定向界面刷新,线程必须是全局变量
用一个有退出条件的无限循环的sub也行。
线程开始就触发该过程,用无限循环来刷新状态,线程完成即退出无限循环。局部变量的线程也可以用这种方式。
不过用法要正确,否则会出问题。
多线程 线程池 VB.NET
这个没法做到。原因
1)当你将方法排入线程池队列后,此方法在有线程池线程变得可用时执行。
2)线程池中某个线程的可用与不可用,是由.net 后台决定,用户程序无法控制的
3)正如你观察到的:线程启动的时间不同,有快有慢,这恰恰说明线程池起作用了:线程池的调度试图让程序响应达到最佳。
网站名称:VB.net线程池示例的简单介绍
网站URL:http://ybzwz.com/article/hgdjcj.html