좋아, 내가 winforms 애플 리케이션과 내 코드가 잘 작동합니다. 하지만 내 코드가 방탄인지 또는 부하없이 작동하는지 알고 싶습니다.vb.net - 처리 된 속성이있는 이벤트. 이 방법은 저장됩니까?
내가 그것을 설명하자
를 나는 내가 메서드 OnKeyDown 오버라이드 (override) 한 윈도우 형태가 있습니다
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은 다음과 같습니다
ActionType이 열거에게 있습니다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
내가 가지고는 ActionType에게 그것을 처리하는 방법을 알고 있다면,이 이벤트에 등록하고 클래스 Handled를 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?