2012-11-29 31 views
1

我们在我们的一些自动化测试拆解中使用了taskkill.exe,其中一些涉及不得不关闭WPF应用程序。Taskkill.exe未正确关闭WPF应用程序

我发现如果有多个窗口打开,taskkill会杀死活动窗口而不是整个应用程序。我们不希望使用/ F标志,因为它不允许应用程序完全关闭并使我们的数据库“变脏”。

有没有人遇到这个问题,并找到了解决方案,或有任何想法之前,我们采取一种完全不同的方法?我能找到的最接近的设置是Application.Current.ShutdownModeOnMainWindowClose,但是当然当taskkill执行时主窗口不是前窗。

+0

也许在侦听关闭命令的应用程序中添加远程端点。 – usr

+0

Taskkill不会终止窗口,它会终止进程。鉴于您使用“自动化”,这是一个非常粗暴的杀死流程的方式。自动化不起作用时,您只能触及双筒猎枪。好吧,没有好转。查看TaskMgr.exe并使用查看+选择列,勾选句柄。它使用枪后它不是零,那么你有驾驶问题。 –

回答

0

也许Process类可以帮助你。

Process[] p = Process.GetProcessesByName("appname"); 
p[0].CloseMainWindow(); 
+0

我们的自动化测试是在Java中运行的,我认为这是我们使用外部命令关闭进程的原因。这并不是说我们不会考虑某种可能适用于此的Java变体。 – Dave

+0

Ahh ..对不起,我不知道你的自动化是基于Java的 –

+0

因为看起来我的问题的答案可能只是“以其他方式做”,所以我会将其标记为答案。感谢您的建议。 – Dave

相关问题