问题标签 [single-instance]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
4 回答
1382 浏览

clickonce - 查找正在运行的 clickonce 部署的单实例应用程序?

我目前正面临我的单实例 clickonce 部署应用程序的问题,也许有人对此有一个好主意。

我的应用程序由一个 Web 应用程序调用,该应用程序将参数传递给这个 exe。现在的问题是,如果应用程序已经在运行,则需要相当长的时间,直到新实例启动,参数移交给正在运行的实例,然后关闭(打开 URL,检查更新,.. .)。

那么有没有办法检测到有一个正在运行的实例,而不引入一个新的小应用程序,这个检测呢?

目标是减少第二次,第三次,...调用需要将参数获取到正在运行的实例的时间。

0 投票
17 回答
65157 浏览

java - 如何实现单实例 Java 应用程序?

有时我看到许多应用程序,例如 msn、windows media player 等都是单实例应用程序(当用户在应用程序运行时执行时,不会创建新的应用程序实例)。

在 C# 中,我Mutex为此使用类,但我不知道如何在 Java 中执行此操作。

0 投票
12 回答
22262 浏览

python - 确保 Linux 中应用程序的单个实例

我正在使用 WxPython 开发一个 GUI 应用程序,但我不确定如何确保在任何给定时间在机器上只运行我的应用程序的一个副本。由于应用程序的性质,多次运行没有任何意义,并且会很快失败。在 Win32 下,我可以简单地创建一个命名互斥体并在启动时检查它。不幸的是,我不知道 Linux 中有任何工具可以做到这一点。

如果应用程序意外崩溃,我正在寻找将自动释放的东西。我不想让我的用户因为崩溃而不得不手动删除锁定文件。

0 投票
1 回答
923 浏览

asp.net - 如何“单实例”一个 ASP.Net AJAX 门户网站?

有人问我是否可以选择“单实例”我们的门户网站。有关WinForms 应用程序中的相同想法,请参阅 Hanselman 博客上的这篇文章。

假设我们在同一台客户端机器上有 2 个快捷方式:

http://MyServer/MyWebPortal/Default.aspx?user=username&document=Foo http://MyServer/MyWebPortal/Default.aspx?user=username&document=Bar

单击第一个快捷方式将启动我们的门户网站,登录并显示文档“Foo”。单击第二个快捷方式应在 Web 门户的运行实例中显示文档“Bar”。

我目前的方法是:在页面加载中,首先为每个客户端创建一个应用程序变量。第二个实例查找 Application 变量以查看门户是否在客户端上运行。如果是,则将第二个 URL 记录在另一个 Application 变量中,并强制退出第二个实例。我尝试创建一个 ASP.Net AJAX 计时器来轮询应用程序变量以显示要显示的文档。这类作品。为了快速响应第二个请求,我将 Timer 间隔设置为 2 秒。由于频繁的回发,这使得门户网站使用起来很烦人。

使用我的方法,有没有办法让第二个实例通知第一个实例检查应用程序变量而不进行轮询?有没有更好的整体方法来解决这个问题?

提前致谢

0 投票
4 回答
6964 浏览

.net - 如何使用 Click Once 构建单实例应用程序?

我需要有一个单实例应用程序(根据这个答案),但它需要通过单击一次来部署。

问题是我要求单击一次不会自动检测更新并在应用程序运行时尝试加载较新版本。如果它正在运行,那么我需要激活另一个实例。通常,在选择单击一次链接时,它的第一件事是尝试找到更新。我想在启动正常更新过程之前拦截它并检查已经运行的实例。

有谁知道这在 Click Once 部署方案中是如何实现的?

0 投票
4 回答
6231 浏览

vb.net - 强制多线程 VB.NET 类在单个窗体上显示结果

我有一个 Windows 窗体应用程序,它使用共享类来容纳应用程序的所有常见对象。设置类有一组定期做事的对象,然后有一些有趣的事情,他们需要提醒主窗体并让它更新。

我目前正在通过对象上的事件来执行此操作,并且在创建每个对象时,我添加一个 EventHandler 以将事件映射回表单。但是,我遇到了一些麻烦,这表明这些请求并不总是最终出现在我的表单的主副本上。例如,我的表单有一个通知托盘图标,但是当表单捕获和事件并尝试显示气泡时,没有出现气泡。但是,如果我修改该代码以使图标可见(尽管它已经可见),然后显示气泡,则会出现第二个图标并正确显示气泡。

有没有人遇到过这个?有没有一种方法可以强制我的所有事件被表单的单个实例捕获,或者是否有完全不同的方法来处理这个?如有必要,我可以发布代码示例,但我认为这是一个常见的线程问题。

更多信息:我目前在表单的事件处理程序中使用 Me.InvokeRequired,在这种情况下它总是返回 FALSE。此外,当我从该表单中使其可见时创建的第二个托盘图标没有上下文菜单,而“真实”图标有 - 这是否提示任何人?

我要拔头发了!这不可能那么难!

解决方案:感谢 nobugz 提供的线索,它引导我找到我现在正在使用的代码(它工作得很好,虽然我不禁想到有更好的方法来做到这一点)。我向名为“IsPrimary”的表单添加了一个私有布尔变量,并将以下代码添加到表单构造函数中:

一旦设置了这个变量并且构造函数完成,它直接进入事件处理程序,我以这种方式处理它(CAVEAT:由于我正在寻找的表单是应用程序的主要表单,My.Application.OpenForms( 0) 得到我需要的东西。如果我正在寻找非启动表单的第一个实例,我必须遍历直到找到它):

首先,它检查它是否在正确的表单上运行——如果不是,则调用正确的表单。然后它检查线程是否正确,如果不正确则调用 UI 线程。然后它运行事件代码。我不喜欢这可能是三个电话,但我想不出另一种方法来做到这一点。它似乎工作得很好,虽然它有点麻烦。如果有人有更好的方法,我很想听听!

再次感谢所有的帮助——这让我发疯了!

0 投票
3 回答
1670 浏览

c# - c# WPF维护加载器的单个实例

我有一个带有 Main() 的 loader.exe,它在 WPF 中加载“UI”,问题是我只想要一个 loader.exe 的实例,我该如何实现呢?

有没有办法让用户点击 loader.exe 它应该检查现有的 loader.exe 是否正在运行并且什么都不做。

目前我有

加载程序

加载器不知道它的加载等等,所以我不能用加载器项目做很多事情......

非常感谢任何帮助代码

提前致谢。

0 投票
3 回答
2792 浏览

c# - 将数据传递给 .NET C# WPF 应用程序/DLL

我有一个 .NET C# WPF 应用程序,我正在尝试使用 Mutex 将其制成单实例应用程序。

此 .NET 应用程序由基于 C++ 的 DLL 使用 CreateProcessAsUser() 调用,并通过环境变量获得参数。

后续实例也将由 C++ DLL 以相同方式创建。

随后的实例需要在退出之前将它们的参数传递给应用程序的第一个实例。

问题是在 .NET 应用程序中可以使用哪些方法,以便后续实例能够将它们的数据传递给 .NET 应用程序的第一个实例?越简单越好。

我研究了一些,但我希望有更简单的方法。

我研究过的东西:

  • 命名管道
  • .NET 远程处理
  • Windows 消息(将 WM_COPYDATA 发送到第一个实例窗口)

由于我只是想将 4 个字符串传递给第一个实例,因此我试图避免使用上述方法,因为它们对我的问题来说有点矫枉过正。

我能想到的最简单的方法是从 .NET 应用程序中导出一个函数,这样 .NET 应用程序的后续实例就可以在 .NET 应用程序的第一个实例上调用此函数并将数据作为函数的参数传递. 但是,这在 .NET 中可行吗?我读过 .NET EXE 或 DLL 无法导出函数。

谢谢!

0 投票
11 回答
17685 浏览

vb.net - 如何确保有一个应用程序实例正在运行

我想检查用户何时双击应用程序图标,该应用程序的另一个实例尚未运行。

我阅读了有关 My.Application 的信息,但我仍然不知道该怎么做。

0 投票
11 回答
62804 浏览

c# - 是否使用互斥锁来防止同一程序的多个实例安全运行?

我正在使用此代码来防止我的程序的第二个实例同时运行,它安全吗?

我担心如果某些东西引发异常并且应用程序崩溃,Mutex 仍将被保留。真的吗?