我有一個相當複雜的情況,實際上結合了我的代碼的一些嵌套條件:處理複雜條件的逆
Sub RunWorkload()
If iisSvr1rstdone = True And (iisSvr2rstdone = True Or utilnamespace.iisSvr2 = "") And (rptSvrrstdone = True Or utilnamespace.rptSvr = "") And (Workload.chkCache.Checked = False Or sqlSvrrstdone = True) Then
Workload.txtStatus.Text = "Running Workload..."
<more things happen>
End If
End Sub
我的問題是,由於代碼是正確的,現在寫的,它只是打響評估一次,這根本行不通。這些done
變量中的每一個都是一個布爾值,它被填充爲「我完成了!」的一部分。事件。因此,如果目前沒有填充,它應該定期重新評估。
這使我想到我現在有這樣一個問題:我在考慮用While
更換If
,但是這將涉及編寫該條件的倒數,所以像:
While iisSvr1rstdone = False And (iisSvrrstdone = False or utilnamespace.iisSvr IsNot Nothing) And (rptSvrrstdone = False or utilnamespace.rptSvr IsNot Nothing) And (Workload.chkCache.Checked = True or sqlSvrrstdone = True)
,我可以循環瀏覽直到它評估爲True
。我的問題是,它似乎...太複雜了,我害怕我錯過了一些可以簡化它的東西。我的另一個想法是將If語句的結果作爲一個單獨的函數存儲,以便我可以讓While語句不斷運行該函數,直到它的計算結果爲true。
我是否錯過了任何會使此概念點擊的內容?
當您調用'RunWorkload'時,是否希望它等到滿足所有條件,然後<使事情發生>?或者如果滿足條件,則調用'RunWorkload'並且只有<使事情發生>? – djv
另外,從布爾表達式中刪除'= True'和'= False'會使它看起來不那麼複雜。 – djv
它需要等到所有條件都滿足爲止。布爾值都默認爲False(我將它們聲明爲False,然後將它們切換爲True)。 –