今日收穫:
一說到互斥,我們首先想到最簡單的可能就是單例模式。但我們平常用的最多的就是進程的互斥,所以如果要實現一個應用程序只能創建一個的話,可以使用互斥的知識來實現。
這裏我們說一下Delphi中關於互斥的實現,
// 創建互斥量
HANDLE m_hMutex = CreateMutex(NULL, FALSE, "Sample07");
// 檢查錯誤代碼
if (GetLastError() == ERROR_ALREADY_EXISTS) {
// 如果已有互斥量存在則釋放句柄並復位互斥量
CloseHandle(m_hMutex);
m_hMutex = NULL;
// 程序退出
return FALSE;
}
主要是採用CreateMutex函數進行實現,每次創建窗體的時候可以採用createMutex判斷進程是否已存在,如果已存在,則提示後退出即可。
擴展思考:
用到最多的就是進程的互斥訪問控制。可以對資源進行控制。當多個進程訪問同一個資源時,可以爲該資源添加鎖,如果該鎖存在,則其他進程不能訪問該資源。
昨日遺留:
非模態窗體被focus的時候數據的刷新。可以再onactivate函數中實現數據的刷新,還有可能就是數據刷新了但未顯示出來。例如TGrandViewGrid就顯示不出刷新的數據,但是如果將某個單元格選中,即可實現數據的及時刷新。