在《异步委托实现等待窗体(loading界面),执行任务超时可以取消操作》一文,通过异步委托貌视能很好的实现了所要的效果,但因异步委托无法控制线程进度,也就是说不能人工干预线程,所以取消操作就是一摆设,存在BUG,本文通过多线程修改了该BUG。
等待窗体WaitForm代码如下:
Imports System.Threading
Public Class WaitForm
Private _MaxWaitTime As Integer
Private _WaitTime As Integer
Private _CancelEnable As Boolean
Private _AsyncResult As IAsyncResult
Private _method As MethodInvoker
Dim th As Thread
Public Property Message As String
Public Property TimeSpan As Integer
Public Sub New(ByVal method As MethodInvoker, ByVal maxWaitTime As Integer, ByVal waitMessage As String, ByVal cancelEnable As Boolean, ByVal timer