2011-02-10 43 views
1

嗨 我打開這樣的形式從我的主窗體中,當用戶選擇一個菜單項。我只能關閉窗體一次,InvalidOperation異常Invoke或BeginInvoke無法在控件上調用,直到窗口句柄已被創建

private void commToolStripMenuItem_Click(object sender, EventArgs e) 
     { 
      Command_Form Command_Form1 = new Command_Form(); 
      Command_Form1.ShowDialog(); 
      // Command_Form1.Dispose(); this didn't help 
     } 

形式「Command_Form1」 我關閉它這樣當用戶點擊關閉按鈕裏面

private void Close_button_Click(object sender, EventArgs e) 
     { 
      this.Close(); //I get the exception here 
     } 

這個過程正常工作一次,但在形式 的第二封閉(這我希望是一個完全不同的/新形式的實例)我得到這篇文章標題中的錯誤。 這是調試窗口中的輸出。

「System.InvalidOperationException」類型的第一次機會異常出現在System.Windows.Forms.dll中 9there是在調試窗口式三份如果這意味着什麼)

當我踏進關閉( )方法是錯誤被拋出的地方,但我很難理解正在發生的事情。有什麼我可以閱讀,以幫助我瞭解關閉方法內發生了什麼?

+0

這個問題的第一個版本至少提到你使用了SerialPort。非常重要的信息可以幫助我們幫助你。 – 2011-02-10 16:49:46

+0

等一下,在下面的評論中說:「我仍然在catch語句中的'internal bool CheckCloseDialog(bool closingOnly)`中出現異常」。謹慎向我們展示這些代碼?如何處理異常的完整堆棧跟蹤呢? – Justin 2011-02-10 17:07:10

回答

1

從您的評論:

監守形式會談(發送/接收 數據)到串行端口,我需要 其他形式的交談同樣的串行端口 (我不知道同時想要兩個表格連接到 連接到串口 )我想我需要打開另一個 窗體中的一個窗體 所以隱藏的東西並不真的 爲我工作。也許有一種方法來 隱藏和從串口 端口斷開???

只是一個猜測:

你訂閱的DataReceived事件的串行端口?如果是這樣,您是否嘗試訪問DataReceived處理程序中的Command_Form控件或屬性?即使表單被丟棄,該事件仍然可能會引發此問題。關閉窗體之前,您可能需要:從DataReceived事件port.Close(),或

  • 註銷:

    • 關閉串口port.DataReceived -= handler

    或者,你可以只隱藏的形式,而不是關閉它,如果你不需要任何其他的端口。

  • 相關問題