麻豆小视频在线观看_中文黄色一级片_久久久成人精品_成片免费观看视频大全_午夜精品久久久久久久99热浪潮_成人一区二区三区四区

首頁 > 學(xué)院 > 開發(fā)設(shè)計(jì) > 正文

怎樣用VB寫多線程

2019-11-18 17:52:10
字體:
供稿:網(wǎng)友
盡管vb5是apPRentsingle-thread(單線程)的.但用addressof加上一些API,就可以非常容易的做多線程.(比VC容易的多,做出來的東西也一樣快,因?yàn)槎际怯肁PI).每一個(gè)縣城(線程,下同)約占用20毫秒的時(shí)間片.

vb5有一個(gè)主線程.我們可以另外加一個(gè)工作線程.對于不清楚什么是單/多線程的程序元,我們用一個(gè)簡單的列子來說明一下.
再form里加上兩個(gè)timer控件.吧interval屬性設(shè)成5000(5秒),然后在兩個(gè)timer1_timer事件中放一個(gè)大loop,如for10000next.運(yùn)行.你會看到第二個(gè)timer控件不會在五秒后執(zhí)行,除非timer1的for-next結(jié)束.同樣,如果你的程序中有大量的數(shù)據(jù)庫讀寫.你的用戶街面可能被"凍".這時(shí),我們就需要用多縣城來改進(jìn)程序了.(當(dāng)然你可以用DoEvents來避免被凍,但用DoEvents有橫多副作用.這里不提).

我們用的第一個(gè)API是CreateThread,VB的格式是:

privatedeclarefunctionCreateThreadLib"kernel32"(byvalpThreadAttributesasany,byvaldwStackSizeaslong,byvallpStartAddressaslong,lpParameterasany,byvaldwCreationFlagsaslong,lpThreadIDaslong)aslong.(從vbAPItextviewer中拿是最真確的語法)

CreateThread的參數(shù)指出你將要?jiǎng)?chuàng)立的縣城是什么樣子的.CreateThread的返回值是一個(gè)縣城的handle.這里是vb的多縣城初始化程序:

PublicSubInitialize(lpfnBasFuncaslong)
dimdwStackSizeaslong
dimdwCreationFlagsaslong
dimlpThreadIdaslong
dimlpParameteraslong
dimmyNullaslong
myNull=0&'createanullpointer
dwStackSize=0'0表示用exestacksize
dwCreationFlags=4'用4表示初始化后先不激活,讓別人來激活.
Me.Thread=CreateThread(myNull,dwStackSize,lpfnBasFunc,myNull,dwCreationFlags,lpThreadId)
ifMe.Thread=myNullthen
Msgbox"createthreadfailed"
endif
endSub
下面是兩個(gè)API用來激活/暫定該線程.

privatedeclarefunctionResumeThreadlib"kernel32"(byvalhThreadaslong)aslongprivatedeclarefunctionSuspendThreadlib"kernel32"(byvalhThreadaslong)aslong

讓我們來用一個(gè)變量表示當(dāng)前縣城的狀態(tài).
publicThreadStatusasboolean
在vb里,可用property來實(shí)現(xiàn)ThreadStatus的管理.


PublicpropertyLetEnabled(byvalvNewValueasboolean)
ifvNewValue=trueandMe.ThreadStatus=falsethen
ResumeThreadMe.Thread
Me.ThreadStatus=True
elseifMe.ThreadStatus=truethen
SuspendThreadMe.Thread
Me.ThreadStatus=False
endif
endProperty

這個(gè)簡單的類可以用NewObject來引用:
'makenewthreadobject
dimmyThreadasNewclsThreads
'創(chuàng)建縣城Foo
myThread.InitializeAddressOfFoo
'激活縣城
myThread.Enabled=True

執(zhí)行后,你可以用PVIEW95.EXE看到你的線程.
你還可以提高你的線程的優(yōu)先級.
SetThreadPriority'設(shè)優(yōu)先級GetThreadPriority'查優(yōu)先級

你把以上的程序加入timer例子,就會看到兩個(gè)timer同時(shí)運(yùn)行.
這里要提醒一下.vb5的開發(fā)環(huán)境是單縣城的.如果你的程序?qū)戝e(cuò),或中斷后試圖恢復(fù),往往會出錯(cuò),有時(shí)是GPF錯(cuò).總之,用vb寫多線程可以寫出和VC一樣快的程序.而且開發(fā)容易的多,開發(fā)速度也快得多.

拋磚引玉.希望能看到獸經(jīng),虎經(jīng),鱉經(jīng).....->


發(fā)表評論 共有條評論
用戶名: 密碼:
驗(yàn)證碼: 匿名發(fā)表
主站蜘蛛池模板: 成人污在线 | 欧美成人精品欧美一级乱黄 | julieann艳星激情办公室 | 最污网站| 懂色av懂色aⅴ精彩av | 在线1区| 中文字幕电影免费播放 | 97中文字幕第一一一页 | 成人区一区二区三区 | 亚洲视频在线网 | 看国产精品 | 日本成人在线免费 | 超久久 | 午夜国产在线观看 | 久久久久久久高清 | 午夜小电影 | 被啪羞羞视频在线观看 | 最新久久免费视频 | 国产91久久久久久 | chinese中国真实乱对白 | 九九热视频在线免费观看 | 最新精品在线 | 成人在线网站 | 成人综合区一区 | 国产91成人 | 深夜免费福利视频 | 国产在线1区| 亚洲国产高清视频 | 亚洲一区二区在线 | 中国美女一级黄色大片 | 久久久久久久久浪潮精品 | 国产分类视频 | 国产91精品久久久久久久 | 中文字幕线观看 | 夜夜b| 干一夜综合| 国产九九在线视频 | 在线视频1区 | 小视频成人 | 久久久久中文字幕 | 欧美三级短视频 |