当我从visual studio启动winform应用程序时,它会进行额外的运行时检查以检查错误。特别是如果我在创建它的线程之外访问一个表单元素,它会抛出异常,文本“跨线程操作无效”。
当我运行在Visual Studio外部启动进程的集成测试时,未启用该检查。我正在运行可执行的构建结果,除了使用Process.Start()和自定义命令行参数启动它。
如何在visual studio之外运行可执行文件时启用运行时检查?
答案 0 :(得分:2)
这由Control.CheckForIllegalCrossThreadCalls属性控制。它使用Debugger.IsAttached的值初始化。只需将其设置为true即可在您的程序未被调试时强制检查。例如:
private void button1_Click(object sender, EventArgs e) {
Control.CheckForIllegalCrossThreadCalls = true;
var t = new System.Threading.Thread(() => {
try {
this.Text = "kaboom";
}
catch (Exception ex) {
MessageBox.Show(ex.Message);
}
});
t.Start();
}
当您使用Ctrl + F5启动程序或在Visual Studio外部运行时,会弹出消息框。
答案 1 :(得分:0)
它构建了一个调试和发布版本,你不能在集成测试中运行调试版本吗?