我一直在寻找这个问题的答案,但在任何地方都找不到。
我编写了一个使用 Watin 的应用程序。它工作正常,除了如果我在 Watin 完成所有操作之前单击“X”按钮关闭应用程序(我猜是在它被处理之前),它不会关闭。我的应用程序仍在运行(尽管表单不再存在),以及所有 IE 实例。
我想我应该使用 FormClosing 事件处理程序来杀死 Watin,但是由于我使用的是 using 语句,所以我不知道如何实现。这是我正在使用的一段代码:
using (var newBrowser = new IE("http://address.com"))
{
AnalyzeTools FormActions = new AnalyzeTools(progressBar, labelProgress, labelProgressOutOf, richBoxKeywords.Lines.Count());
Analyzer Analytic = new Analyzer(newBrowser, richBoxKeywords.Lines.ToList<string>(), FormActions);
BeingAnalyzed = Analytic;
Analytic.Initialize(textBoxLogin.Text, textBoxPass.Text);
Analytic.HandleAnalysis();
}
编辑: 好的,我做了更多的故障排除,这就是我想出的:该应用程序一直在工作,直到它完成,就这么简单。但是它并没有“正确”完成——它崩溃了,因为它无法访问不再存在的表单。
我相信我可以通过创建一个 FormClosing 或 FormClosed 事件来解决这个问题,当触发时,它会修改我的应用程序的行为。自定义“退出”方法。但是,我不会终止 Watin(我想做的事情),并且该应用程序仍将运行。
问题是,我真的不需要它来完成它应该做的所有动作。
我的终止想法是个好主意吗?有没有办法在不放弃使用语句的想法的情况下终止 Watin?
编辑2: 好的,我尝试了一些新东西。我创建了那个要求做出决定的消息框。我尝试使用 Application.Exit() 来终止,但它并没有像我希望的那样工作。该应用程序的 vshost 仍在运行(WatiN?)。所以我想我的问题是这样的:终止 WatiN 以删除 using 语句、使 IE 对象在类中的任何位置可用并在用户选择终止它时将其处置的唯一方法是什么?