如何防止程序加载两次?

时间:2010-01-20 00:26:33

标签: vb.net

我有一个VB.NET程序。在proerties / Application中,我选中了Make a single Instance Application。但它仍然允许某人在已经打开的同时打开该程序。我怎么能阻止这个?

3 个答案:

答案 0 :(得分:1)

当您选择Make Single Instance Application时,启动程序的新副本将自动切换到现有副本。

您可以在Application类中自定义此行为。

答案 1 :(得分:1)

简短的回答是你不能。 VB在幕后做了一些技巧来帮助你实现这个目标,因为这是一个常见的业务需求。但是,您创建的实际上独占的任何内容都会让您遭到恶意创建/保留该资源并拒绝该资源的其他人的拒绝服务攻击。

常见的方法是创建一个众所周知的互斥/信号量/命名管道/类似的东西,如果它已经存在,退出刚刚启动的实例。没有一种安全的方式可以做你想做的事。

答案 2 :(得分:1)

最常用的方法是实现互斥锁,但是,我会在CodeProject上指向一两篇文章herehere

希望这有帮助, 最好的祝福, 汤姆。