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

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

vb.net多線程原理 vb 多線程 異步

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

委托,Delegate

成都創(chuàng)新互聯(lián)網(wǎng)站建設(shè)服務(wù)商,為中小企業(yè)提供成都網(wǎng)站設(shè)計(jì)、成都做網(wǎng)站服務(wù),網(wǎng)站設(shè)計(jì),網(wǎng)站改版維護(hù)等一站式綜合服務(wù)型公司,專業(yè)打造企業(yè)形象網(wǎng)站,讓您在眾多競(jìng)爭(zhēng)對(duì)手中脫穎而出成都創(chuàng)新互聯(lián)。

就是讓你處于這個(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)來寫richtextbox,就不會(huì)產(chǎn)生錯(cuò)誤了。不然,直接垮線程寫richtextbox,可能會(huì)出現(xiàn)和UI線程的沖突。

你好,是只有VB.NET能多線程,還是所有VB都能實(shí)現(xiàn)多線程?

簡(jiǎn)單回答:

1、當(dāng)前來說,編程與運(yùn)行環(huán)境合適的情況下,VB.net與VB都有實(shí)現(xiàn)多線程的可能。

2、VB、VB.net的最基本的概念,是調(diào)用系統(tǒng)的接口進(jìn)行編程,只要系統(tǒng)提供“多線程”的功能調(diào)用,它們就能實(shí)現(xiàn)多線程。

3、VB注意于面向用戶,面向任務(wù),其高級(jí)的一些程序?qū)崿F(xiàn)需要直接調(diào)用win的API,VB實(shí)現(xiàn)多線程的例子也可以在網(wǎng)絡(luò)上搜索到。

一、關(guān)于VB、VB.net的相關(guān)知識(shí):

1、編程指的是用人類能理解的語言來編寫指令集,并通過專用的編譯軟件或環(huán)境來轉(zhuǎn)化這些指令,使得這些指令能讓計(jì)算機(jī)識(shí)別,從而控制計(jì)算機(jī)做人類需要進(jìn)行的工作。

2、也就是說無論是VB.NET還是VB它們都只是“人類能理解的語言”,它們通過專用的編譯軟件或環(huán)境來轉(zhuǎn)化這些指令,進(jìn)而操作電腦。

3、進(jìn)一步特化到VB上去說。VB基于VB的運(yùn)行庫(kù),它的運(yùn)行庫(kù)又基于win的API((Application Programming Interface,應(yīng)用程序編程接口)是一些預(yù)先定義的函數(shù)),也就是說,VB的很多(多到90%以上)的功能是直接基于調(diào)用windows提供的一些基本接口函數(shù)。

4、VB.net有什么不同呢,它基于.net運(yùn)行庫(kù)。什么 意思?這個(gè)意思就是,微軟發(fā)現(xiàn)win的API不夠用了,不好用了,就打算在windows上加裝點(diǎn)東西,讓它有更多的接口函數(shù)。但要注意的是,多數(shù)情況下,這些接口比win的API的效率要低一些。在win7及以后的版本的win中,已經(jīng)自含了.net運(yùn)行庫(kù)。

5、順便說,為什么很多人會(huì)發(fā)現(xiàn)win7的運(yùn)行速度看起來要比xp慢呢,個(gè)人認(rèn)為就是因?yàn)檎{(diào)用的是.net的接口來實(shí)現(xiàn)的,.net就是比API的慢。當(dāng)然了,.net的功能上要比xp原有的API的功能強(qiáng)。

6、VB與VB.net在語法上是非常近似的,只是因?yàn)閂isual Studio的版本不同,后期的Visual Studio已不提供簡(jiǎn)純的VB了,注意它們的不同主要是后臺(tái)核心調(diào)用的理念上的不同。

求教VB.net多線程問題

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

打個(gè)比方

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

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

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

vb 怎么實(shí)現(xiàn)多線程

很簡(jiǎn)單,調(diào)用API函數(shù)CreateThread

但是用vb做多線程的關(guān)鍵不在于創(chuàng)建,而是在于線程的不穩(wěn)定,其不穩(wěn)定是由于vb6自身的控件(如按鈕、文本框等)不是線程安全的,怎么用你程序就可能怎么掛,所以這些個(gè)玩樣兒在多線程中統(tǒng)統(tǒng)不能用。

那么UI的實(shí)現(xiàn)也得用API實(shí)現(xiàn)。這樣vb的多線程才相對(duì)要穩(wěn)定。但是vb的可視化開發(fā)的優(yōu)勢(shì)又蕩然無存。

VB.NET 簡(jiǎn)單多線程

多線程一般是不推薦用的,因?yàn)榫€程之間如果有共享資源的話會(huì)引起競(jìng)爭(zhēng),需要加鎖處理;而且線程間沒有時(shí)序關(guān)系,所以你在調(diào)試中可能會(huì)出現(xiàn)異步處理結(jié)束順序與開始處理順序不一致的情況(我在調(diào)試中已經(jīng)發(fā)現(xiàn)該問題)。

針對(duì)你提出的這個(gè)問題,采用了多線程處理,利用的是BackgroundWorker也就是異步處理控件進(jìn)行了處理。

代碼已經(jīng)經(jīng)過調(diào)試通過。歡迎交流,如有問題,留下QQ或其他聯(lián)系方式。

代碼如下,并附程序截圖。

‘---------------------------------------------------

Imports?System.ComponentModel?'導(dǎo)入異步控件命名空間

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


分享標(biāo)題:vb.net多線程原理 vb 多線程 異步
鏈接URL:http://weahome.cn/article/hjoihp.html

其他資訊

在線咨詢

微信咨詢

電話咨詢

028-86922220(工作日)

18980820575(7×24)

提交需求

返回頂部