1. 程式人生 > >Delphi - 互斥物件下實現系統的單例模式

Delphi - 互斥物件下實現系統的單例模式

使用CreateMutex函式建立互斥物件

利用Windows系統函式CreateMutex(),找出當前系統是否已經存在指定程序的例項,如果沒有則建立一個互斥體。

CreateMutex函式原型如下:

function CreateMutex(lpMutexAttributes: PSecurityAttributes; bInitialOwner: BOOL; lpName: PChar): THandle; 

function CreateMutex(lpMutexAttributes: PSecurityAttributes; bInitialOwner: BOOL; lpName: PChar): THandle;

其中引數:

lpMutexAttributes :SECURITY_ATTRIBUTES 結構型別指標,可以為NULL。

bInitialOwner :是否初始化互斥體。

lpName :互斥體物件的名稱,一般是工程的名稱。

最終,函式返回一個互斥體控制代碼。

 

Delphi WinFrm利用互斥物件實現單例模式

單擊Project,View Source;

uses 中新增Windows;

Begin和End之間新增如下程式碼。

 

 

  //*****************************單例模式********************************
  CreateMutex(nil, False, 'Application Name');
  if GetLastError = ERROR_ALREADY_EXISTS then
  begin
    Application.MessageBox('系統已經開啟了,請確認下!', '提示', MB_OK);
    Halt(0);
  end;
    //*****************************單例模式********************************

&n