我正在努力找到最好的方法来做到这一点,到目前为止,我的尝试都没有奏效。寻找一些额外的输入。
我有一个需要在后台执行的子,是这样的
Sub Start_Work()
'Step 1
Sleep(1000)
'Step 2
Sleep(2000)
'Step3
Sleep(1000)
'Step 4
End Sub
我这样称呼它
Dim Task1 As Task
Task1 = Task.Factory.StartNew(Sub() Start_Test())
我看到的所有取消任务示例都使用 for 循环来连续检查取消令牌,但在这种情况下有点困难。
我正在考虑添加一个 while 循环和状态,但我不确定如何让代码等待一两秒钟,然后再进入下一步。
欢迎任何意见/建议。
您可以使用 manualresetevent 来处理它
手动重置事件将允许您立即停止它,而不是等待完整的睡眠时间
在此示例中,您将永远不会达到Console.WriteLine("start wait 3")
Imports System.Threading
Imports System.Threading.Tasks
Module Module1
Dim mreWait As New ManualResetEvent(False)
Dim stopTask As Boolean
Sub Main()
Dim task1 As task
task1 = Task.Factory.StartNew(Sub() start_work())
Console.WriteLine("waiting")
Thread.Sleep(1500)
Console.WriteLine("stop")
stopTask = True
mreWait.Set()
Console.Read()
End Sub
Sub start_work()
mreWait.Reset()
Console.WriteLine("start wait 1")
mreWait.WaitOne(1000)
If stopTask Then Return
Console.WriteLine("start wait 2")
mreWait.WaitOne(1000)
If stopTask Then Return
Console.WriteLine("start wait 3")
mreWait.WaitOne(1000)
If stopTask Then Return
Console.WriteLine("stop start_work")
End Sub
End Module