VB.NET:从其他类添加取消事件处理程序

时间:2013-03-20 15:28:58

标签: vb.net event-handling progress-bar

我试图找出一种方法来使用事件,处理程序 - 从异步操作中取消操作(进度条)。

我有一个正在显示操作进度的类ProgressBar。它有一个取消按钮(通常是生成的Friend WithEvents,并具有Private Sub ButtonCancel_click)。没什么特别的。

取消设置公开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会以任何形式告诉我这是错误的。

请帮我开始吧!

谢谢。

1 个答案:

答案 0 :(得分:0)

您是否考虑过使用BackgroundWorker?它支持进度事件和取消。

另外,请勿在{{1​​}}函数中使用ByRef。如果维护代码的人没有意识到参数是Mine,那么这不是必需的,可能会导致细微的错误。