【发布时间】:2013-03-09 19:12:36
【问题描述】:
我正在尝试找出一种使用事件、处理程序的方法 - 从异步操作中取消操作(进度条)。
我有一个类 ProgressBar,它显示操作的进度。它有一个 Cancel 按钮(它是 Friend WithEvents,通常生成,并且有一个 Private Sub ButtonCancel_click)。没什么特别的。
Cancel 设置一个公共的 CancelButtonHasBeenPressed。
我希望能够在另一个班级中对按下取消做出反应。
我阅读了有关添加处理程序以响应事件,并在操作结束时删除处理程序的信息,这是我应该做的。
类似:
Public Function Mine(ByRef myProgress As ThatProgressWindow)
' some setup
AddHandler CancelEvent, AddressOf myProgress.ButtonCancel_Click
' create and call workers
RemoveHandler CancelEvent, AddressOf myProgress.ButtonCancel_Click
End Function
Public Event CancelEvent()
Private Function worker(ByVal state As Object) As Object
' do work
If ' how do I check for the event ? Then drop everything and run
End Function
上面代码/伪代码的问题:
1) 在 AddHandler 中,我应该添加一个存在的事件,该事件与实际取消相关联 - 但 ProgressBar 中没有任何内容,可以这样做 - 如何添加取消?我只有一个取消按钮...所以我不得不将 button_click 设为公开,这可能是错误的...
不知何故,我在想用户按下取消会触发那个事件......这不是真的吗?我对此真的很陌生,而且网络似乎在所有示例中都假设查看这些示例的人已经是专家。
2) 如何检查事件是否已引发?
当我尝试以任何形式键入“If”后跟事件名称时,Intellisense 一直告诉我这是错误的。
请帮我开始!
谢谢。
【问题讨论】:
标签: vb.net event-handling progress-bar