同一目录下只能运行一个实例,不同目录下的同一程序可以同时运行?

idaydayup 2012-04-07 06:51:56
请问怎样实现同一目录下的程序只能运行一个实例,而同一个程序在不同目录下的可以同时运行?
比如有软件A,初始位置在 D:\A文件夹\ 我打开A文件夹下的程序之后,再想打开他就会提示已经在运行
但是我把A复制到B文件夹 D:\B文件夹\ 这时再打开程序时就可以打开了.
...全文
2186 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
idaydayup 2012-04-07
  • 打赏
  • 举报
回复
[Quote=引用 4 楼 的回复:]

引用 3 楼 的回复:
引用 1 楼 的回复:

http://xxinside.blogbus.com/logs/47162540.html
将带程序路径的程序可执行名当作互斥量名。

不过要注意,程序可以在运行的时候在相同盘内移动。

程序可以在运行的时候在相同盘内移动。
请教一下,这句话是什么意思?

你试下就知道了。打开一个程序,在运行中尝试将exe移动到另一个文……
[/Quote]

还要麻烦您帮忙看一下 我用了那段代码之后,当试图运行第二个实例时,弹出错误提示框,错误如下

.NET-BroadcastEventWindow.2.0.0.0.33c0d9d.0: test.exe - 应用程序错误
"0x10002627"指令引用的"0x00000010"内存。该内存不能为"read"。
要终止程序,请单击“确定”。

我的代码如下:

[STAThread]
private static void Main()
{
Application.EnableVisualStyles();
Application.SetCompatibleTextRenderingDefault(false);
AppDomain.CurrentDomain.AppendPrivatePath("System");
AppDomain.CurrentDomain.UnhandledException += new UnhandledExceptionEventHandler(Program.CurrentDomain_UnhandledException);
Application.ThreadException += new ThreadExceptionEventHandler(Program.Application_ThreadException);
bool firstInstance;
mutex = new Mutex(true, @"Global\"+myTool.GetMD5Hash(Application.StartupPath), out firstInstance);

try
{
if (firstInstance)
{
Application.Run(new F_Main());
}
}
finally
{
//只有第一个实例获得控制权,因此只有在这种情况下才需要ReleaseMutex,否则会引发异常。
if (firstInstance)
{
mutex.ReleaseMutex();
}
mutex.Close();
mutex = null;
}
}
threenewbee 2012-04-07
  • 打赏
  • 举报
回复
[Quote=引用 3 楼 的回复:]
引用 1 楼 的回复:

http://xxinside.blogbus.com/logs/47162540.html
将带程序路径的程序可执行名当作互斥量名。

不过要注意,程序可以在运行的时候在相同盘内移动。

程序可以在运行的时候在相同盘内移动。
请教一下,这句话是什么意思?
[/Quote]
你试下就知道了。打开一个程序,在运行中尝试将exe移动到另一个文件夹中(必须在同一个盘,不同盘移动本质上是复制+删除)。系统会允许你这么做。
idaydayup 2012-04-07
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 的回复:]

http://xxinside.blogbus.com/logs/47162540.html
将带程序路径的程序可执行名当作互斥量名。

不过要注意,程序可以在运行的时候在相同盘内移动。
[/Quote]
程序可以在运行的时候在相同盘内移动。
请教一下,这句话是什么意思?
orochiheart 2012-04-07
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 的回复:]
http://xxinside.blogbus.com/logs/47162540.html
将带程序路径的程序可执行名当作互斥量名。

不过要注意,程序可以在运行的时候在相同盘内移动。
[/Quote]
+1学习!
threenewbee 2012-04-07
  • 打赏
  • 举报
回复
http://xxinside.blogbus.com/logs/47162540.html
将带程序路径的程序可执行名当作互斥量名。

不过要注意,程序可以在运行的时候在相同盘内移动。

111,126

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Creator Browser
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

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