2011-06-09 24 views
2

我有一個WindowsForm項目運行兩個BackgroundWorker對象進行測試,如果數據應收集和數據收集。這些似乎運行正常,但是當我添加功能來查看收集的數據時,表單在嘗試繪製可用數據時會凍結。c#窗體無法響應點擊動作

當單擊第一個按鈕時,數據將在帶有列表框的新窗體窗口中列出。在這個新窗口中,我有另一個按鈕用於繪製數據,如果看起來沒問題。

這是整個項目凍結的地方。我試過了,而不是軟拷貝我傳入新窗體的類引用,在構造函數中創建一個新對象。只要數據收集BackgroundWorker未運行,它似乎工作正常。當收集發生時,點擊圖表按鈕凍結表格,數據顯示按鈕工作得很好。

private void wellStatusButton1_Click(object sender, EventArgs e) 
{ 
    try 
    { 
     ListDataForm temp = new ListDataForm(tubes[0], 1); 
     temp.ShowDialog(); 
    } 
    catch (Exception ex) 
    { 
     MessageBox.Show(ex.Message); 
    } 
    } 

private void plotDataButton_Click(object sender, EventArgs e) 
{ 
    try 
    { 
     GraphForm plotData = new GraphForm(at); 
     plotData.ShowDialog(); 
    } 
    catch (Exception ex) 
    { 
     MessageBox.Show(ex.Message); 
    } 
} 
+0

您確定它在後臺線程上運行,而不是在UI線程上運行。嘗試調試它... – 2011-06-09 23:33:26

+0

我們需要至少看到問題代碼的實現。你的示例代碼告訴我們什麼都沒有,除了你正在創建一些對象。 – 2011-06-09 23:34:48

+0

要測試什麼線程是什麼,請在創建線程時在應用程序的主線程上設置thread.Name屬性,以確保調試時線程正在做什麼。 – 2011-06-09 23:48:25

回答

0

這是很難從你的問題得到很多信息,但有一點,可能對你有用的是:當一個Windows程序在做別的事情的背景,通常是UI可能被凍結。您可以嘗試使用:Application.DoEvents()定期,這將允許用戶界面看起來更響應。