2010-08-20 27 views
1

這是我的問題:我正在C#中製作產品上傳模塊(主窗體)。我從excell文件讀取數據,然後上傳到數據庫,然後我調整圖像大小並通過FTP上傳。一切正常。現在我想添加一個進度條。我創建了一個新表單,添加了兩個進度條,併爲進度條提供了新的值,並提供了公共方法,第三種方法是在完成時輸出文本。如果我將它的一個實例放置到主窗體中,它可以工作,但是我正在進行艱難的操作(調整圖像大小,將其上傳到ftp),並且CPU無法像更改一樣快地跟蹤進度條。所以解決方法是在新線程中啓動進度表單。我嘗試了許多不同的方式來做到這一點,但沒有成功。主要問題是我應該從主要形式觸發進度表的公共方法。C#如何在另一個線程中運行和處理表單?

我從來沒有在C#中的進度條,你能告訴我哪個是最簡單和最簡單的方法嗎?

回答

1

我想也許你會最好的在單獨的線程中執行密集的動作,然後將事件編組回到你的進度形式,以便向用戶顯示進度。

當你有單獨的線程時,你不能從這些線程更新GUI。你應該看看使用Invoke MSDN

本示例還顯示了一個簡單示例,說明如何使用工作線程執行更加密集的任務。

private void Button_Click(object sender, EventArgs e) 
    { 
    myThread = new Thread(new ThreadStart(ThreadFunction)); 
    myThread.Start(); 
    } 
    private void ThreadFunction() 
    { 
    MyThreadClass myThreadClassObject = new MyThreadClass(this); 
    myThreadClassObject.Run(); 
    } 
+0

謝謝。我已將密集行動置於新線程中。進度條從主開始,所以它的工作完美。 – Ervin 2010-08-20 10:27:11

相關問題