我處理這個(gè)問題的大概過程,當(dāng)程序響應(yīng)DataReceived時(shí):
十年的紅河哈尼網(wǎng)站建設(shè)經(jīng)驗(yàn),針對(duì)設(shè)計(jì)、前端、開發(fā)、售后、文案、推廣等六對(duì)一服務(wù),響應(yīng)快,48小時(shí)及時(shí)工作處理。全網(wǎng)整合營銷推廣的優(yōu)勢(shì)是能夠根據(jù)用戶設(shè)備顯示端的尺寸不同,自動(dòng)調(diào)整紅河哈尼建站的顯示方式,使網(wǎng)站能夠適用不同顯示終端,在瀏覽器中調(diào)整網(wǎng)站的寬度,無論在任何一種瀏覽器上瀏覽網(wǎng)站,都能展現(xiàn)優(yōu)雅布局與設(shè)計(jì),從而大程度地提升瀏覽體驗(yàn)。創(chuàng)新互聯(lián)建站從事“紅河哈尼網(wǎng)站設(shè)計(jì)”,“紅河哈尼網(wǎng)站推廣”以來,每個(gè)客戶項(xiàng)目都認(rèn)真落實(shí)執(zhí)行。
Private?Sub?MyCOMM_DataReceived(ByVal?sender?As?Object,?ByVal?e?As?
System.IO.Ports.SerialDataReceivedEventArgs)?Handles?MyCOMM.DataReceived
If?IsClosing?Then?Exit?Sub?'如果界面正在關(guān)閉串口則退出過程
Try
IsListenning?=?True'設(shè)置正在讀取標(biāo)記,供界面操作判斷
Wait(150)'等待150毫秒
Dim?n?As?Long?=?MyCOMM.BytesToRead
Dim?buf(n?-?1)?As?Byte
Try
MyCOMM.Read(buf,?0,?n)
Catch?ex?As?Exception
MsgBox("接收短信出錯(cuò)",?"COMPort.DataReceived")
Throw?New?System.Exception(ex.Message)
Finally
IsListenning?=?False'無論接收數(shù)據(jù)成功與否,都關(guān)閉正在讀取標(biāo)記
End?Try
MyCOMM.Close()
MyCOMM.Open()
'Do?SomeThing
Catch?ex?As?Exception
MyCOMM.Close()
MyCOMM.Open()
End?Try
End?Sub
Protected?Sub?Wait(ByVal?miliseconds?As?Integer)
Dim?tmpNow?As?Date?=?Now
While?Now.Subtract(tmpNow).Milliseconds??miliseconds
Application.DoEvents()
End?While
End?Sub
希望能幫的上忙
編譯前可以點(diǎn)三角繼續(xù)運(yùn)行,編譯時(shí)可能會(huì)提示錯(cuò)誤,如果能編譯過,它在編譯后的程序中不起作用。
用time控件啊,獲取threadstate后,按指定時(shí)間間隔規(guī)定向界面刷新,線程必須是全局變量
用一個(gè)有退出條件的無限循環(huán)的sub也行。
線程開始就觸發(fā)該過程,用無限循環(huán)來刷新狀態(tài),線程完成即退出無限循環(huán)。局部變量的線程也可以用這種方式。
不過用法要正確,否則會(huì)出問題。
//一部分指令……
int?duration?=?1000;?//設(shè)定進(jìn)程掛起時(shí)間,單位毫秒
System.Threading.Thread.Sleep(duration);?掛起當(dāng)前進(jìn)程
//另一部分指令……
如果你用控制臺(tái)應(yīng)用程序,這樣就可以了。如果你用窗體應(yīng)用程序且在窗體主線程下運(yùn)行,則需要用到計(jì)時(shí)器或多線程等。