有一個問題深深的困擾著我。。。可我是個菜鳥,沒有做過類似的專案,所以無奈之下,只好來到CSDN求助。。
我要實作這樣的功能:在一個程序中,當滿足一定的條件時,我會執行某段代碼。判斷的條件有兩個,三個或者更多。經過思考,檢查我想出了幾種方案:如下
1.使用定時器,不斷判斷條件是否滿足
Private Sub Timer1_Timer()
If 條件1 = True And 條件2 = True And 條件3 = True Then
...執行代碼..
End If
End Sub
2.自己撰寫一個死回圈
Public Sub power()
Dim Condition As Boolean
Condition = True '自己設定一個回圈條件
Do While Condition = True '不斷的回圈判定是否滿足條件,一旦滿足條件則執行我想執行的代碼
If 條件1 = True And 條件2 = True And 條件3 = True Then
...執行代碼..
End If
Loop
End Sub
但是我發現,使用以上兩種方法編程,會使程式死掉,另外CPU使用率升到50%.不知道有沒有什么其他的方法,能夠不停地回圈判斷條件是否滿足,一旦條件滿足我的要求,則執行想要執行的代碼!!
uj5u.com熱心網友回復:
往“事件”上靠......
uj5u.com熱心網友回復:
定時器不會讓程式死掉。第二個辦法,可以加上一個Sleep(10);
uj5u.com熱心網友回復:
1.用定時器會加重CPU的負擔,因為我對實時性要求比較高,定時器時間常數為1ms的時候就更不用說啦
2.加上sleep后還是一樣,程式假死,界面上的其他按鈕不能操作
uj5u.com熱心網友回復:
怎么往“事件”靠?可以給個小例子么 ,實體什么的,不懂呀,,,,,,,,,
大蝦蝦蝦蝦蝦~~~~~~~~~~~~
uj5u.com熱心網友回復:
這些條件是怎么被改變的?
uj5u.com熱心網友回復:
要么你給出完整的代碼,要么你自己看,例子在我說的《VB程式員指南》上有。uj5u.com熱心網友回復:
在回圈處理時適時釋放系統控制權:Public Sub power()
Dim Condition As Boolean
Condition = True '自己設定一個回圈條件
Do While Condition = True '不斷的回圈判定是否滿足條件,一旦滿足條件則執行我想執行的代碼
If 條件1 = True And 條件2 = True And 條件3 = True Then
...執行代碼..
End If
DoEvents '*****
Loop
End Sub
一般來說,Timer 方案應該不會造成“假死”,除非你的時間間隔設定得太短。
uj5u.com熱心網友回復:
不知道你的條件是怎么產生的,猜測一下:用n個label控制元件儲存n個條件的值,然后通過Label1_Change事件判斷這n個label的值是否滿足你的要求,如果滿足,就執行一定的代碼。
當然也可以通過類模塊來自定義事件,更加靈活.....
uj5u.com熱心網友回復:
樓主這樣提問很不好.你至少要把你的要求說個明白, 比如你需要多久判斷一次,判斷的是什么條件, 判斷條件是來自什么地方等等. 至于你貼的代碼倒是其次的. 根本沒能說明問題.
不要別人說一個,你就冒一個條件出來,淋漓不盡很費勁啊.
uj5u.com熱心網友回復:
定時器不會讓程式死掉。
第二個辦法,可以加上一個Sleep(10);
1.用定時器會加重CPU的負擔,因為我對實時性要求比較高,定時器時間常數為1ms的時候就更不用說啦
2.加上sleep后還是一樣,程式假死,界面上的其他按鈕不能操作
如果真是這樣,不適合用VB做,定時器最小大約20ms,再小的沒多大意義,跑個空事件也是要花掉不少時間的。
uj5u.com熱心網友回復:
應該是個資料采集類的程式吧,我覺得先參考一下別人的東西,采集頻率什么的,然后來確實自己需要的速度,要求快的話就只能用C去做了,VB不適合干這個,然后費時的程序盡量分解成小程序來呼叫。比如
If 條件1 = True And 條件2 = True And 條件3 = True Then
...執行代碼..(運行要花一年)
End If
然后說,我要我的程式快起來,這樣的話怎么給你出主意呢?
如果這部分的代碼運行時間超過100ms的話你就需要想辦法分解了。
轉載請註明出處,本文鏈接:https://www.uj5u.com/gongcheng/136429.html
標籤:API
下一篇:如何用vb制作人際關系圖
