在窗体加载时我们只是初始化了我们的CJM,现在当关闭窗体时我们也需要关闭CJM。
以下为操作步骤:
在VisualStudio中,从位于代码窗口顶部的右手下拉框中选择 “FormClosing”事件。
这会创建一个Form1_FormClosing方法,在关闭窗体时调用。
将以下代码添加到方法中:
‘ 确信关闭了CogJobManager!!
myJobManager.Shutdown()
将该代码添加到使用CogJobManager的任何应用程序。
现在您已经建立一个加载所保存的CogJobManager并且能适当地关闭它的应用程序。
进行实验时:
在命令行中添加一个调用LoadObjectFromFile()的断点。
运行您的应用程序。
(现在可以是调整任何编译错误的最佳时间。)
当达到断点时,浏览“线程”窗口。
有多少线程?
将调试程序进行到代码的下一行。
现在您能看到多少线程?
运行您的应用程序?
有点烦,嗯?决不要运行CJM。
停止运行应用程序,添加一个“运行一次(Run Once)”按钮。
以下为实现方法:
在VisualStudio中浏览 GUI设计器窗口。
将一按钮从工具箱的”常用控件”处拖到窗体上。
将按钮的文本改为“运行一次”。
修改按钮的名称为“运行一次按钮(RunOnceButton)”。
在按钮上双击自动生成RunOnceButton_Click 方法。
我们想要RunOnceButton_Click运行的CogJobManager。
因此需要添加以下代码:
Try
myJobManager.Run()
Catch ex As Exception
MessageBox.Show(ex.Message)
End Try
注意使用一个Try/Catch代码块以确保错误被适当地处理
在步骤1中我们通过调用以下函数运行我们的CJM:
myJobManager.Run()
问题在于我们忘记阅读一下手册:
Run() 是一个非同步方法:它开始运行我们的工作并且立即返回。
如果您试图运行一个还没有完成的工作,Run() 会抛出一个错误。
校正方法:我们的应用程序应该使得“运行一次”按钮失效,直到完成此前的运行。
要使得该按钮失效,在调用Run()之前需添加以下这行代码:
RunOnceButton.Enabled = False
当所有工作已经完成运行时,CJM启动一个“停止”事件。
当该事件启动时我们将再次激活该按钮。
以下为实现方法:
在我们级别的最后,键入以下停止事件的操作者:
Private Sub myJobManager_Stopped(ByVal sender As Object, _
ByVal e As CogJobManagerActionEventArgs)
RunOnceButton.Enabled = True
End Sub
End Class