2011-03-27 105 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

相關問題