[英]Close upcoming Debug Assertion
我正在用NUnit测试调试DLL,这很烦人,每次测试运行都会出现大量的调试断言。
所以我写了一个工具来轮询一个新的调试声明。 该工具每隔x毫秒迭代一次所有窗口,并检查标题是否为可能的“调试声明”窗口标题的集合之一。
用伪代码看起来像这样:
void main()
{
var thread = new Thread(ThreadMethod);
thread.Start();
}
private void ThreadMethod()
{
while(true)
{
foreach(var title in possibleWindowTitles)
{
IntPtr windowHandle = FindWindowHandle(title);
if(windowHandle != IntPtr.Zero)
{
SetToForeground(windowHandle);
SendKeys.SendWait("%I);
}
}
}
}
代码行SendKeys.SendWait("%I")
将ALT + I
键发送到窗口,这是“继续”按钮的组合键。
我的问题是:
有更好的选择吗? 就像是:
User32.dll
的CloseWindow
方法对我不起作用-没有异常,但是什么也没有发生) SetToForeGround()
解决方法的更好解决方案 我的方法可行,但是我认为我的解决方案很容易出错。 所以我认为有个好主意的人
您可以配置对话框的行为。 这是DefaultTraceListener提供的行为,可以在代码中或通过配置文件进行配置。 Debug.Assert的文档中提到了这一点。
在配置文件中,您可以这样关闭用户界面:
<configuration>
<system.diagnostics>
<assert assertuienabled="false" logfilename="c:\myFile.log" />
</system.diagnostics>
</configuration>
您还可以通过配置文件从集合中删除默认的跟踪侦听器:
<configuration>
<system.diagnostics>
<trace autoflush="false" indentsize="4">
<listeners>
<remove name="Default" />
<add name="myListener" type="System.Diagnostics.TextWriterTraceListener" initializeData="c:\myListener.log" />
</listeners>
</trace>
</system.diagnostics>
</configuration>
这些中的任何一个都可以通过Debug.Listeners
集合通过代码来完成。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.