2014-02-25 90 views
1

我有一個C#Windows窗體應用程序,有一些相機控制和計算機視覺。對於需要更長時間計算的所有部件,我使用了獨立線程。但是在GUI的回調函數中仍然有一些部分。據我所知,所有這些回調函數都在同一個線程中執行。有沒有辦法看到這個線程工作或閒置多少時間?需要多少百分比的空閒時間才能使GUI仍然響應?如何查看C#Windows Forms應用程序需要多少處理時間?

+0

你可以使用這個想法在下面的問題中提到:http://stackoverflow.com/questions/9954571/how- c鍵-計算-執行-時間 - 鋒利應用 – Monah

回答

0

對於簡單的任務,您可以使用秒錶並手動測量時間。不過,我認爲你需要檢查一下performance profiler是什麼。

此外 - 有幾種情況下,您的GUI需要重處理。在大多數情況下,問題來自在事件處理程序中進行太多計算,而不是在外部實現它們,然後在完成時更新表單。它不是單個/多線程問題,更多是正確使用可用事件。

2

這是recommended你不應該阻止UI線程超過50ms,否則會影響UI的響應。也就是說,兩個用戶界面回調隊列排列在Form.BeginInvoke之間,每人花費約50ms完成,可能會給用戶帶來不愉快的UI體驗。

更新用戶界面比用戶對其做出反應(即每秒大約24幀)沒有任何意義。所以,您應該扼制UI線程回調併爲用戶輸入事件提供優先權。

我最近公佈的它如何可能做一個例子:

https://stackoverflow.com/a/21654436/1768303

相關問題