2010-12-05 52 views
1

如何確保在按鈕上只創建一個線程而不會意外雙擊?在按鈕上啓動線程

+0

這被稱爲「debouncing」。見例如http://blogs.msdn.com/b/oldnewthing/archive/2004/10/15/242761.aspx – MSalters 2010-12-06 10:46:08

回答

0

下面的代碼應該這樣做(在Win32下)...

EnterCriticalSection(&critSec); 
if (ghThread != INVALID_HANDLE_VALUE) 
{ 
    ghThread = ::CreateThread(NULL, stackSize, (LPTHREAD_START_ROUTINE)ThreadEntry, NULL, 0, NULL); 
} 
LeaveCriticalSection(&critSec); 

這並不當然假設你初始化ghThread HANDLE提前INVALID_HANDLE_VALUE。

+0

這取決於。多個線程可以訪問這個函數嗎? – 2010-12-05 19:16:30

0

你說的是Windows編程嗎? 我對此並不太熟悉,但是您應該捕獲WM_LBUTTONDOWN消息(或雙擊)並將一些布爾標誌設置爲TRUE。如果此標誌爲TRUE,所有你需要的不是創建線程。它必須被初始化爲cource的FALSE。

+0

國旗的要點是什麼?另外,`WM_LBUTTONDOWN`沒有雙擊指示。這不僅僅是一次點擊,只是它的前半部分。您需要單獨的向上/向下拖放信息進行拖放,而不是點擊。 – MSalters 2010-12-06 10:44:23