2016-10-03 50 views
0

我有一個C#Winforms用戶界面,調用COM對象來派生一些數據。C#我需要進度條工作,而UI使com調用

我希望UI上的進度條循​​環顯示工作正在進行中。問題是COM調用是同步的,所以處理等待COM調用完成,因此進程欄循環代碼不會被調用。

應該我: 1.使COM調用異步以允許進度條代碼循環? 2.使用第二個線程來運行進度條(這是否行得通,或者UI線程是否仍然掛在COM調用上,因此不刷新進度條?) 3.一些更聰明的方法?

+1

請參閱此問題http://stackoverflow.com/questions/1952201/display-progress-bar-while-doing-some-work-in-c – Techidiot

+0

您只能在獲得有關進度的反饋時才能顯示進度。沒有這些,只是盲目猜測你應該如何移動進度條。你沒有這個,所以你最好使用ProgressBarStyle.Marquee。基本的「我沒有死」的反饋並不比沙漏光標更有幫助。在另一個線程上創建COM組件也非常重要,所以它不能阻塞你的UI,一個簡單的工作線程不夠好,需要[看起來像這樣](http://stackoverflow.com/a/21684059/17034) 。 –

回答

1

您應該創建單獨的線程執行方法調用需要時間。在返回所需數據之前,會在您的UI線程上顯示進度條。這應該很好。

即您應該從建議的三個選項中選擇第一個選項。