多線程操控同一個(gè)空間容易出現(xiàn)混亂,可通過SyncLock語句,將對(duì)空間的操作添加至lock語句內(nèi)部,
創(chuàng)新互聯(lián)公司專注為客戶提供全方位的互聯(lián)網(wǎng)綜合服務(wù),包含不限于成都網(wǎng)站設(shè)計(jì)、做網(wǎng)站、嵊泗網(wǎng)絡(luò)推廣、微信小程序、嵊泗網(wǎng)絡(luò)營(yíng)銷、嵊泗企業(yè)策劃、嵊泗品牌公關(guān)、搜索引擎seo、人物專訪、企業(yè)宣傳片、企業(yè)代運(yùn)營(yíng)等,從售前售中售后,我們都將竭誠(chéng)為您服務(wù),您的肯定,是我們最大的嘉獎(jiǎng);創(chuàng)新互聯(lián)公司為所有大學(xué)生創(chuàng)業(yè)者提供嵊泗建站搭建服務(wù),24小時(shí)服務(wù)熱線:18982081108,官方網(wǎng)址:www.cdcxhl.com
Class?simpleMessageList
Public?messagesList()?As?String?=?New?String(50)?{}
Public?messagesLast?As?Integer?=?-1
Private?messagesLock?As?New?Object
Public?Sub?addAnotherMessage(ByVal?newMessage?As?String)
SyncLock?messagesLock
messagesLast?+=?1
If?messagesLast??messagesList.Length?Then
messagesList(messagesLast)?=?newMessage
End?If
End?SyncLock
End?Sub
End?Class
參考:
報(bào)錯(cuò)信息是什么?截圖一下。
---------補(bǔ)充----------------
你這報(bào)錯(cuò)與線程應(yīng)該關(guān)系不大吧,是調(diào)用COM不熟悉造成的,在項(xiàng)目屬性里面有些相關(guān)配置你研究研究。
指針是c語言的概念,VB、VB.NET沒有指針,除了指針以外也很少有人能玩到你的編程深度,關(guān)鍵看不懂呢。
???就是子程序的名稱,比如每次點(diǎn)擊c后就自動(dòng)調(diào)動(dòng)相對(duì)應(yīng)的子程序,如子程序是
Private Sub my_do ()
........
End Sub
相應(yīng)的AddHandler c.Click, AddressOf my_do
實(shí)際上是個(gè)委托
很簡(jiǎn)單,你怎么不先問我,還在這提問。用api函數(shù),鉤子,設(shè)置成全局鉤子,然后對(duì)鉤取來的message消息不做處理,也不返回,這樣屏蔽了鍵盤了。鉤子函數(shù)api好像是什么hook的那個(gè),還有鉤子函數(shù)的返回函數(shù),以整個(gè)自定義函數(shù)的指針作參數(shù)
你想一邊運(yùn)行,一邊填充數(shù)據(jù),我給你出的主意是多線程,用另一個(gè)線程來Invoke數(shù)據(jù),
Thread和線程Timer(不是Form中的Timer),要是同時(shí)訪問一塊數(shù)據(jù)注意用
SyncLock鎖
用API ?GetKeyboardState?,判斷所有的鍵里哪些被按下了。
下面的是判斷鍵盤燈的狀態(tài)
Public?Class?NativeMethods
Private?Shared?keyState()?As?Byte
DllImport("user32.dll")?_
Private?Shared?Function?GetKeyboardState(ByVal?keyState()?As?Byte)?As?Boolean
End?Function
Private?Shared?Sub?Update()
keyState?=?New?Byte(256)?{}
Dim?result?As?Boolean?=?GetKeyboardState(keyState)
'?Check?for?error:
If?result?=?False?Then
Debug.WriteLine("GetKeyBoardState?error:?"??Marshal.GetLastWin32Error)
Throw?New?Exception("GetKeyBoardState?error:?"??Marshal.GetLastWin32Error)
End?If
End?Sub
Public?Enum?LightState
Off
[On]
End?Enum
'?Example?-?the?keyboard?lights...
Public?Shared?ReadOnly?Property?CapsLockState()?As?LightState
Get
Update()
Dim?isOn?As?Boolean?=?(keyState(Keys.CapsLock)?=?1)
Return?IIf(isOn,?LightState.On,?LightState.Off)
End?Get
End?Property
Public?Shared?ReadOnly?Property?NumLockState()?As?LightState
Get
Update()
Dim?isOn?As?Boolean?=?(keyState(Keys.NumLock)?=?1)
Return?IIf(isOn,?LightState.On,?LightState.Off)
End?Get
End?Property
Public?Shared?ReadOnly?Property?ScrollLockState()?As?LightState
Get
Update()
Dim?isOn?As?Boolean?=?(keyState(Keys.Scroll)?=?1)
Return?IIf(isOn,?LightState.On,?LightState.Off)
End?Get
End?Property
End?Class