网站建设资讯

NEWS

网站建设资讯

joinvb.net的简单介绍

vb.net,等待一个线程结束的问题

如果需要等待T2线程结束,那又何必开启这个线程!!

站在用户的角度思考问题,与客户深入沟通,找到柯城网站设计与柯城网站推广的解决方案,凭借多年的经验,让设计与互联网技术结合,创造个性化、用户体验好的作品,建站类型包括:网站设计、网站建设、企业官网、英文网站、手机端网站、网站推广、申请域名雅安服务器托管、企业邮箱。业务覆盖柯城地区。

直接:

Label1.Visible = True

setB()

MsgBox("d")

这不就是执行完setB(),再执行MsgBox("d"),多线程是多余的。

多线程的作用大多数也就用来同时执行多任务而不用等待的。

vb.net中如何结束一个线程

vb.net中如何结束一个线程

一般而言,如果您想终止一个线程,您可以使用System.Threading.Thread类的Abort方法. 例如:

Dim worker As ThreadStart = New ThreadStart(AddressOf workerthreadmethod)

Dim t As Thread = New Thread(worker)

t.Start()

MessageBox.Show("Wait for a while for the thread to start.")

MessageBox.Show(t.ThreadState.ToString())

t.Abort()

MessageBox.Show(t.ThreadState.ToString())

t.Join()

MessageBox.Show(t.ThreadState.ToString())

当然,在调用Abort方法后,线程并不是立刻终止,要等线程的所有finally快中的代码完成后才会完全终止. 所以在主线程中可以用Join方法来同步,当线程还未完全终止时,t.Join()将处于等待,直到t线程完全结束后再继续执行后面的语句。

Abort方法是会导致线程跳出一个异常错误的,你需要在代码中捕获该异常。下面是一个比较完整的VB.NET线程例子:

Imports System

Imports System.Threading

Public Class MyTestApp

Public Shared Sub Main()

Dim t As New Thread(New ThreadStart(AddressOf MyThreadMethod))

'Start the thread

t.Start()

MsgBox("Are you ready to kill the thread?")

'Kill the child thread and this will cause the thread raise an exception

t.Abort()

' Wait for the thread to exit

t.Join()

MsgBox("The secondary thread has terminated.")

End Sub

Shared Sub MyThreadMethod()

Dim i As Integer

Try

Do While True

Thread.CurrentThread.Sleep(1000)

Console.WriteLine("This is the secondary thread running.")

Loop

Catch e As ThreadAbortException

MsgBox("This thread is going to be terminated by the Abort method in the Main function")

End Try

End Sub

End Class

Thread.Abort()方法用来永久销毁一个线程,而且将抛出ThreadAbortException异常。使终结的线程可以捕获到异常但是很难控制恢复,仅有的办法是调用Thread.ResetAbort()来取消刚才的调用,而且只有当这个异常是由于被调用线程引起的异常。因此,A线程可以正确的使用Thread.Abort()方法作用于B线程,但是B线程却不能调用Thread.ResetAbort()来取消Thread.Abort()操作。

在VB.NET中怎么样判断一个数组是不是为空

一: 利用错误捕获功能判断

Dim ArrayS() As String

Private Sub Command1_Click()

On Error GoTo z

ReDim ArrayS(10)

If UBound(ArrayS) -1 Then

MsgBox "数组不为空"

End If

Exit Sub

z:

MsgBox "数组空"

End Sub

二、 Join方法:

Dim ArrayS() As String

Private Sub Command1_Click()

If (CStr(Join(ArrayS, ""))) = "" Then

MsgBox "为空"

Else

MsgBox "不为空"

End If

End Sub

VB 怎么比较两个数组相等

VB没有直接比较两个数组的方法或函数,需要自己变成解决。首先,如果两个数组(假定为a和b,下同)的类型都是Variant或者String,可以这样来比较:

If Join(a) = Join(b) Then

'a和b相等

Else

'a和b不相等

End If

如果数组的类型是数值型的,或者类型是不确定的,则比较复杂些了:

If VarType(a)  VarType(b) Then

'类型不相等的可以判定为数组不相等

ElseIf UBound(a)  UBound(b) Or LBound(a)  LBound(b) Then

'元素个数不相等或者下标范围不相等的可以判定为数组不相等

Else '如果上述两个条件都符合,就要开始逐个比较了

'先假定两个数组相等

For i = LBound(a) To UBound(a)

If a(i)  b(i) Then

'只要有一个不相等,就可以判定为数组不相等

Exit For '其他的就不需要再比较了

End If

Next i

End If

VB.net 如果读取txt数据(或十进制dat数据)

vb.net虽也有input语句,但一次只能读取到一个变量中,可以用TextFieldParser类代替,但似乎没以前的方便。不过比以前的更灵活。写入文件Write还是可以用,在Microsoft.VisualBasic.FileIO中。

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

Dim fileName As String = "E:\User Documents\Master\My Documents\电子阅读\股票\table2.csv"

Using Recrods As New Microsoft.VisualBasic.FileIO.TextFieldParser(fileName) '建立TextFieldParser对象

'MyReader.TextFieldType = FieldType.Delimited

Recrods.SetDelimiters(",") '把字段分隔符设置为","

Dim curRow() As String

Do Until Recrods.EndOfData

curRow = Recrods.ReadFields() '读取记录行,返回字符串数组,所以不同字段类型需要自己转换。

Debug.Print(Join(curRow, vbTab))

Loop

End Using

End Sub

vb.net中开一个线程,直到新窗体启动完成

虽然你的想法是在 LoginBtn_Click 事件中将复杂的操作分离出去以减轻UI的负担, 这很好完全没有问题.

但是问题在于 Me.Invoke(dh)这里,若是ChkLogin里面仍然是大规模的操作呢 你的代码就又变成将很复杂的操作扔给了UI, 当然会出现窗体无法拖动的情况了.

解决办法很简单, 很多种. 将ChkLogin()里的操作直接放在DelegateLogin()里面吧 me.invoke仅仅只是做简单的轻量的刷新之类的操作就好了.

希望能帮上你的忙.


网页标题:joinvb.net的简单介绍
网址分享:http://njwzjz.com/article/hppgpp.html