网站建设资讯

NEWS

网站建设资讯

包含vb.net线程顺序的词条

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.net 多个线程执行顺序的问题

多个线程执行的时候,是按CPU时钟轮番执行的,你可以在两个SUB中增加一条输出到即时窗口:debug.print test_time

看不出你的test1和test2做什么用的?

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控件的一些事件的触发顺序是什么

一个一个回答吧。

1、CheckBox 的 MouseDown 事件发生在 CheckedChange 事件之前,但这是指在单步调试的状态下,事实上在编译好的程序中,这两个事件是分别处在两个不同的线程中,单纯的考虑时间上的前后没有意义。

2、MouseDown 在先。Scroll 事件发生在滚动条移动的过程中,而 ValueChange 事件发生在滚动条的 Value 属性发生改变的时候,两者没有必然联系。举例,当你用鼠标拖动滚动条移动的时候,这时发生的是 Scroll 事件;松开鼠标键后,Value 属性值改变,这时候触发 ValueChange 事件。另外,如果滚动条的 Value 是通过代码改变的而非鼠标拖动的,是不触发 Scroll 事件只触发 ValueChange 事件。

3、ClientSize 是指控件的工作区的高度和宽度。比如说 form,它的 Size 值是包括标题栏、边框等,而 ClientSize 是工作区,不包括标题栏、边框等。

4、一般是 Load→Paint→Shown。


文章标题:包含vb.net线程顺序的词条
链接地址:http://cdweb.net/article/hhedec.html