真实的国产乱ⅩXXX66竹夫人,五月香六月婷婷激情综合,亚洲日本VA一区二区三区,亚洲精品一区二区三区麻豆

成都創(chuàng)新互聯(lián)網(wǎng)站制作重慶分公司

vb.net多線程委托 vbnet多線程編程

關(guān)于vb.net 多線程和委托問(wèn)題

Delegate?Sub?MySubDelegate(form?As?Form1)

創(chuàng)新互聯(lián)公司專注于托里網(wǎng)站建設(shè)服務(wù)及定制,我們擁有豐富的企業(yè)做網(wǎng)站經(jīng)驗(yàn)。 熱誠(chéng)為您提供托里營(yíng)銷型網(wǎng)站建設(shè),托里網(wǎng)站制作、托里網(wǎng)頁(yè)設(shè)計(jì)、托里網(wǎng)站官網(wǎng)定制、成都微信小程序服務(wù),打造托里網(wǎng)絡(luò)公司原創(chuàng)品牌,更為您提供托里網(wǎng)站排名全網(wǎng)營(yíng)銷落地服務(wù)。

Class?class1

Sub?Sub1(form?As?Form1)

form.Timer1.Enabled?=?True

form.Label1.Visible?=?True

MsgBox("kkk")

End?Sub

End?Class

Private?Sub?DelegateTest()

Dim?c1?As?New?class1

Dim?msd?As?MySubDelegate?=?AddressOf?c1.Sub1

Me.Invoke(msd,Me)

End?Sub

求教VB.net多線程問(wèn)題

多線程是用于處理復(fù)雜項(xiàng)目的

打個(gè)比方

你的主程序線程A中有個(gè)循環(huán),由于代碼是一行行走的,所以循環(huán)結(jié)束前下面的代碼無(wú)法運(yùn)行,而此時(shí)主界面的反應(yīng)就類似卡死的樣子,你點(diǎn)擊按鈕也沒(méi)有反應(yīng),因?yàn)橹骶€程在忙著循環(huán)呢,所以對(duì)按鈕的事件代碼要等待了,如果要避免這種情況,就要用到多線程,另開一個(gè)新線程專門用來(lái)執(zhí)行循環(huán)代碼,主界面就不會(huì)卡死了,只要在循環(huán)結(jié)束后將結(jié)果傳回主線程調(diào)用就可以了,再?gòu)?fù)雜點(diǎn)要涉及到委托,控制了

按你的要求其實(shí)你的代碼用不到多線程,只要把sleep放到兩段代碼中間就可以了。

新線程結(jié)束用thread.abort()

VB.net可以多線程控制同一個(gè)窗體及其控件嗎

不可以,但是能夠在主線程的基礎(chǔ)上調(diào)用委托(Invoke)。(主線程會(huì)被占用)

例子:

Dim thr As Threading.Thread

Public Delegate Sub VoidDelegate()

Private Sub Form1_Load(sender As Object, e As EventArgs) Handles MyBase.Load

thr = New Threading.Thread(AddressOf Where)

thr.Start()

End Sub

Public Sub Where()

Me.BeginInvoke(New VoidDelegate(AddressOf WhereThr))

End Sub

Public Sub WhereThr()

Me.TextBox.text="0123456789"

End Sub

(Invoke)這種情況下,主線程被占用,所有由主線程執(zhí)行程序,都將被(wherethr函數(shù)執(zhí)行結(jié)束)后執(zhí)行。

VB.NET中的多線程和委托是什么關(guān)系? 能不能給我一個(gè)通俗易懂的范例,謝謝

委托,Delegate

就是讓你處于這個(gè)線程里時(shí),委托另一個(gè)線程去執(zhí)行一些動(dòng)作

我簡(jiǎn)單舉一個(gè)寫richtextbox的例子:

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

'創(chuàng)建一個(gè)名為 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

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

這樣,你在多線程應(yīng)用時(shí),在其他線程里用txtW(str)來(lái)寫richtextbox,就不會(huì)產(chǎn)生錯(cuò)誤了。不然,直接垮線程寫richtextbox,可能會(huì)出現(xiàn)和UI線程的沖突。

VB.NET多線程程序問(wèn)題

在多線程中你需要定義委托來(lái)修改控件屬性

比如你修改Textbox屬性,則:

Delegate Sub dl_ShowTextbox(ByVal iStr As String)

Public Sub ShowTextbox(ByVal iStr As String)

If Textbox.IsDisposed Then

Return

End If

If Textbox.InvokeRequired = True Then

Dim pInvoke As New dl_ShowTextbox(AddressOf ShowTextbox)

Me.Invoke(pInvoke, New Object() {iStr})

Else

Textbox.Text = iStr

End If

End Sub

在多線程中調(diào)用

ShowTextbox( "要顯示的內(nèi)容" )

關(guān)于VB.NET中多線程和委托界面假死無(wú)響應(yīng)的問(wèn)題

并沒(méi)有看出什么地方可能導(dǎo)致程序假死,這排版也太亂了.不妨調(diào)試一下程序,當(dāng)出現(xiàn)你說(shuō)的"假死"后暫停一下程序,看看線程都卡在哪里.

另外,從設(shè)計(jì)上來(lái)看,你這里并不需要多線程操作.


當(dāng)前標(biāo)題:vb.net多線程委托 vbnet多線程編程
標(biāo)題URL:http://weahome.cn/article/hpgpds.html

其他資訊

在線咨詢

微信咨詢

電話咨詢

028-86922220(工作日)

18980820575(7×24)

提交需求

返回頂部