使用Application.UseWaitCursor
來關閉沙漏鼠標指針會有什麼危險嗎?應該使用Application.UseWaitCursor嗎?
回答
「危險」是不恢復光標。
你可以用try…finally
塊這樣做是爲了確保即使拋出一個異常,你恢復光標,或者在實現IDisposable
這樣就可以使用using
塊,而不是一類包裝此功能清理語法有點。
public class WaitCursor : IDisposable
{
public WaitCursor()
{
Application.UseWaitCursor = true;
}
public void Dispose()
{
Application.UseWaitCursor = false;
}
}
用法:
using (new WaitCursor())
{
// do stuff - busy, busy, busy
} // here the cursor will be restored no matter what happened
如果應用程序將被鎖定,直到長時間運行的操作完成,這將是正確的使用Application.UseWaitCursor
。但是,如果您有多個表單只鎖定一個表單,最好在表單上設置Cursor
屬性。
您還應該記住將Application.UseWaitCursor = false;
置於finally
塊中,以確保在拋出應用程序異常的情況下重置遊標。
將窗體上的光標設置不起作用,文本框控件將覆蓋它。這實際上是財產首先存在的原因。 – 2012-02-29 11:26:53
是的,這是正確的,但僅適用於啓用的控件。如果您有一個鎖定表單的長時間運行流程,則還需要禁用輸入數據的可能性。例如。將所有控件放在可在處理過程中禁用(Enable = false;)的面板中。 – 2012-02-29 11:38:14
- 1. 我應該使用AJAX嗎?
- 2. 我應該使用document.writeln嗎?
- 3. 我應該使用convertView嗎?
- 4. 我應該使用node.js嗎?
- 5. JUnit應該使用assertEquals嗎?
- 6. 我應該使用NHibernate嗎?
- 7. 我應該使用Hadoop嗎?
- 8. 我應該使用Zend_Auth嗎?
- 9. 我應該使用mahout嗎?
- 10. GetRequiredService應該使用GetService嗎?
- 11. 我應該使用Subversion嗎?
- 12. 我應該使用JAI嗎?
- 13. 我應該使用CRUD嗎?
- 14. 我應該使用AutoreleasePool嗎?
- 15. 我應該使用cflock嗎?
- 16. 我應該使用ExecutorService嗎?
- 17. 我應該使用Zend_Form嗎?
- 18. 應該使用PHP類嗎?
- 19. 我應該使用Application.Lock()嗎?
- 20. 我應該使用fieldset嗎?
- 21. 我應該使用InnoDB嗎?
- 22. 我應該使用dequeReusableCellWithIdentifier嗎?
- 23. 我應該使用Cookie嗎?
- 24. 我應該使用Bootstrap嗎?
- 25. 我應該使用[autorelease]嗎?
- 26. 我應該使用NSViewController嗎?
- 27. 我應該使用MongoDB嗎?
- 28. 我應該使用WebView嗎?
- 29. 我應該使用Umbraco嗎?
- 30. 應該使用std :: endl嗎?
請參閱http://stackoverflow.com/questions/302663/cursor-current-vs-this-cursor-in-net-c/302865#302865 – 2012-02-29 11:28:20
您對下方評論中提出的問題的迴應是什麼?這個問題呢? – CJ7 2012-02-29 11:31:24
我沒有看到問題,有人剛從錯誤的線程中使用了這個類。等待遊標的更典型用法是當*不使用線程時。 – 2012-02-29 11:46:38