OpenMutex 问题,紧急送分哦

LuckyGyt 2005-07-06 11:55:56
用CreateMutex 保证应用程序只启动一个实例
program Project1;
function CheckPreviousInstance:boolean;
begin
Result :=False;
CreateMutex(nil, True, 'test');
Result := GetLastError = ERROR_ALREADY_EXISTS;
end;

begin
if not CheckPreviousInstance then
begin
Application.Initialize;
Application.Title :='';
Application.CreateForm(TForm2, Form2);
Application.Run;
end;
end.
在另外程序中 进行检测判断上面Project1.exe 是否存在,
如果存在什么也不做,不存在则启动Project1.exe
procedure TForm1.Button3Click(Sender: TObject);
var
aHandle :Hwnd;
begin
try
begin
aHandle := OpenMutex(MUTEX_ALL_ACCESS,False,PChar('test'));
if aHandle<>0 then
begin
case WaitForSingleObject(aHandle,500) of
WAIT_OBJECT_0:
begin
ReleaseMutex(aHandle);
end;
WAIT_ABANDONED:
begin
// ReleaseMutex(aHandle);
WinExec(Pchar('c:\'+'project1.exe'),SW_HIDE);
end;
end;
end else WinExec(Pchar('c:\'+'project1.exe'),SW_HIDE);
//
end;
// if not ExistMutex(Test) then WinExec(Pchar('c:\'+'project1.exe'),SW_HIDE);
except
end;
end;
这个程序有点问题:在Project1.exe 存在时,多次执行检测程序。在关闭project1.exe后
执行检测程序,就无法启动Project1.exe 了!


各位同仁,给点意见!
...全文
441 2 打赏 收藏 转发到动态 举报
写回复
用AI写文章
2 条回复
切换为时间正序
请发表友善的回复…
发表回复
亮剑_ 2005-07-06
  • 打赏
  • 举报
回复
顶一下
beyondtkl 2005-07-06
  • 打赏
  • 举报
回复
你在進程關閉時 Release這個Mutex
在Windows 2000/XP环境下,使用多线程和信号量机制实现经典的读者写者问题,每个线程代表一个读者或一个写者。每个线程按相应测试数据文件的要求,进行读写操作。请用信号量机制分别实现读者优先和写者优先的读者-写者问题。 读者-写者问题的读写操作限制: (1)写-写互斥,即不能有两个写者同时进行写操作 (2)读-写互斥,即不能同时有一个读者在读,同时却有一个写者在写 (3)读-读允许,即可以有二个以上的读者同时读 读者优先的附加限制:如果一个读者申请进行读操作时已有另一读者正在进行读操作,则该读者可直接开始读操作。 写者优先的附加限制:如果一个读者申请进行读操作时已有另一写者在等待访问共享资源,则该读者必须等到没有写者处于等待状态后才能开始读操作。 运行结果显示要求:要求在每个线程创建、发出读写操作申请、开始读写操作和结束读写操作时分别显示一行提示信息,以确信所有处理都遵守相应的读写操作限制。 3 测试数据文件格式 测试数据文件包括n 行测试数据,分别描述创建的n 个线程是读者还是写者,以及读写操作的开始时间和持续时间。每行测试数据包括四个字段,各字段间用空格分隔。第一字段为一个正整数,表示线程序号。第二字段表示相应线程角色,R 表示读者是,W 表示写者。第三字段为一个正数,表示读写操作的开始时间。线程创建后,延时相应时间(单位为秒)后发出对共享资源的读写申请。第四字段为一个正数,表示读写操作的持续时间。当线程读写申请成功后,开始对共享资源的读写操作,该操作持续相应时间后结束,并释放共享资源。下面是一个测试数据文件的例子: 1 R 3 5 2 W 4 5 3 R 5 2 4 R 6 5 5 W 5.1 3

1,184

社区成员

发帖
与我相关
我的任务
社区描述
Delphi Windows SDK/API
社区管理员
  • Windows SDK/API社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧