好吧,我有一個winforms應用程序,我的代碼工作正常。 但我想知道,如果我的代碼是防彈的,或者它只能在沒有負載的情況下工作。vb.net - 處理過的屬性的事件。這樣保存嗎?
讓我來解釋一下:
我有,我已經覆蓋了的onkeydown方法的窗口形式:
Protected Overrides Sub OnKeyDown(ByVal e As System.Windows.Forms.KeyEventArgs)
dim args as new ActionEventArgs(ActionType.Bark)
RaiseEvent Action(me, args)
e.Handled = args.Handled
MyBase.OnKeyDown(e)
End Sub
正如你可以看到我提出一個自定義事件,事後查詢它的已處理變量。 我的事件/ ActionEventArgs看起來是這樣的:
Public Event Action(sender as Object, e as ActionEventArgs)
Public Class ActionEventArgs
Inherits EventArgs
Public Handled as Boolean
Public Action as Action
Public Sub New(ByVal action as ActionType)
Me.Action = action
End Sub
End Class
其中操作類型是這個枚舉
Public Enum ActionType
Bark,
Jump,
FireNukeWithoutFurtherWarning
End Enum
現在我有註冊到這個事件,如果它知道如何處理的操作類型是一個類將Handle設置爲true。
Public Sub actionHandler(ByVal sender as Object, e as ActionEventArgs) Handles me.Action
If e.Handled then return
If e.Action = ActionType.Bark
Bark()
e.Handled = true
End If
End If
我在我的開發人員機器上試過這段代碼,它似乎工作。在OnKeyDown方法中,每次查詢Handled變量時,我的actionHandler方法都先運行。
但我問我,如果因爲我的開發機器處於閒置狀態和事件隊列被處理得這麼快,還是可以期待
RaiseEvent(...)
方法等到每個註冊的事件處理程序已經完成它的這個只是個案TAKS?