2011-03-27 128 views
0

当我从Visual Studio启动一个winform应用程序时,它会执行额外的运行时检查来检查错误。特别是,如果我在创建线程之外访问一个表单元素,则会引发异常,并显示文本“跨线程操作无效”。如何在Visual Studio以外的调试模式下运行winforms应用程序

当我运行我的集成测试,它启动Visual Studio以外的过程时,该检查未启用。我正在运行可执行的生成结果,除了用Process.Start()和可能的自定义命令行参数来启动它。

如何在运行Visual Studio以外的可执行文件时启用运行时检查?

回答

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之外运行程序时,会显示消息框。

0

它构建一个调试和发布版本,你可以不在你的集成测试中运行调试版本?

+0

这是我从我的测试运行的版本,我仍然没有得到警告。我会澄清我的问题,提到这一点。 – 2011-03-27 18:10:22

相关问题