不用多線程?
網(wǎng)站建設哪家好,找創(chuàng)新互聯(lián)建站!專注于網(wǎng)頁設計、網(wǎng)站建設、微信開發(fā)、小程序開發(fā)、集團企業(yè)網(wǎng)站建設等服務項目。為回饋新老客戶創(chuàng)新互聯(lián)還提供了邵原免費建站歡迎大家使用!
即使用多線程,也不會是“同時”執(zhí)行,題主只要略懂一些計算機編譯原理就能明白了。
不用多線程更不可能讓兩個過程同步執(zhí)行了。
不過可以提供一個折衷的法子,示例如下:
Sub?a()
'過程一?
End?Sub?
Sub?b()
'過程二
End?Sub
Sub?Timer1_Tick()?'簡寫了,實際在VB.NET里不是這樣的
Timer1.Enabled?=?False?
a()
End?Sub?????
Sub?Button1_Click()?'同樣簡寫
Timer1.Enabled?=?True
b()
End?Sub
利用了一個 Timer 控件,實現(xiàn)了這種偽同步(其實還是異步),a()、b() 兩個過程相互獨立切能并發(fā)運行。
注意:上述代碼需要先把 Timer1 的 Enabled 屬性設置為 False,Interval 屬性要盡可能小。
題主是否想詢問“vbnet同時執(zhí)行多個任務怎么實現(xiàn)”?多線程操作。vbnet同時執(zhí)行多個任務通過多線程操作實現(xiàn),Visual Basic.net,屬于計算機軟件領域,是計算機中實現(xiàn)網(wǎng)絡功能的編程語言。
Imports System.Threading
Public Class Form1
Dim t1, t2 As Thread
Dim tt1
Private Delegate Sub voiddelegate(ByVal i As Integer)
Private Sub Form1_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load
Form2.Show()
End Sub
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
t1 = New Thread(AddressOf test)
tt1 = 1
t1.Start()
tt1 = 2
t2 = New Thread(AddressOf test)
t2.Start()
' Timer1.Start()
End Sub
Private Sub updateui(ByVal i As Integer)
Form2.Label1.Text = i.ToString
Form2.Label2.Text = i.ToString
End Sub
'把循環(huán)放到線程中運行會好一些,其實主要事務是對窗體控件的操作時多線程意義不大,因為訪問窗體的代碼依然要在窗體線程中運行。
Private Sub test()
Dim d As voiddelegate = AddressOf updateui
For i = 0 To 9000
Me.Invoke(d, i)
Next
End Sub
'如果放在計時器中運行效果好的多
Private Sub Timer1_Tick(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Timer1.Tick
Static i As Integer = 0
i += 1
If i 9000 Then Timer1.Stop() : i = 0
Form2.Label1.Text = i.ToString
Form2.Label2.Text = i.ToString
End Sub
End Class
'如果在另一線程中用Application.run 打開窗體確實能行,不過窗體間相互操作不起作用,這個尚待研究中。