2013-12-13 50 views
0

简单地说,我有一个包含按钮的表单。
当引发Click事件时,会调用一个连接到数据库并执行一些与数据库相关的东西的函数。
现在,有时连接正在花费时间来建立,有时甚至根本没有连接(这很好,也是一种常见的情况)。
发生这种情况时,我想让用户有机会取消正在发生的任何事情。

当KeyDown.Event被提出时退出Sub

一个不错的想法是将取消它在一个的keydown事件(即按下ESC键时),所以我加在KeyDown-事件,并将此它:

If (e.KeyCode = System.Windows.Forms.Keys.Escape) Then 
    //cancel function called in button.Click 
End If 


但是我怎样才能取消正在进行的任何操作/退出button.Click-Sub?

+2

您需要异步执行操作 –

回答

1

有类似的问题,我解决它通过:

  1. 声明布尔
  2. 创造了一个取消按钮
  3. 运行在一个单独的线程
  4. 耗时代码的时间,因为参与循环我定期检查布尔值(这是通过取消按钮单击事件设置的)。