高人指点C#中如何用信号量来实现进程的互斥

doomhaha doomhaha 墨衍会员 · AI 创作全网分发 墨衍智能分发 通过墨衍一键同步至各平台 可同步平台 CSDN微信公众号微博知乎掘金百家号博客园抖音小红书 你的文章也可以这样分发 墨衍会员 ¥399起/年,写一次发全网 我也要 + 加入社区
我想使一个进程在WinXP下同时只能有一个运行,以前用delphi时的语句如下,不知道如何翻译成C#的语法?包括C#中对CreateSemaphore,GetLastError,CloseHandle三个API的声明语句
//-- 判断程序是否已启动;
function fIfAppExist(AppTitle : String) : Boolean;
var
hSem : THandle;
semNm : Array[0..256] of Char;
begin
Result := False;
StrPCopy(semNm, 'Semaphore.'+AppTitle);
hSem := CreateSemaphore(nil, 0, 1, semNm); //-- 在内存创建一个信号量

//-- 如果信号量已经存在,则说明应用程序已经存在
if ((hSem <> 0) AND (GetLastError() = ERROR_ALREADY_EXISTS)) then
begin
CloseHandle(hSem);
Result := True;
end;
end;
...全文
评论 3
收藏 已收藏
分享
返回顶部
doomhaha
C# 111,129 成员 642,537 内容