c# - C# 中的 .Net/Mono Singleton(服务/服务器?) - 检测我的 .net 应用程序是否已在运行并将命令行参数传递给它

标签 c# .net mono

我想在 C# 中创建一个简单的单例命令行应用程序(服务?),当它运行时,它会检查它是否已经在运行,如果是,它会将命令行参数传递给已经运行的实例并自行关闭。现在在已经运行的实例中,它将通过类似“delegate void Command(string[] args);”的事件接收命令行参数。或类似的东西,这样我就可以通过事件通过一个应用程序管理命令行。

例如在 photoshop 中,当你第一次打开一张图片时,它会加载一个新的 photoshop 实例,但是当你打开第二张图片时,它会检查 photoshop 实例是否已经在运行,如果它是, 它将图片传递给已经加载的 photoshop 实例,这样就可以避免 photoshop 重新加载的昂贵时间...

或者在网络浏览器中,您可以将其设置为如果您打开一个新的 .html 文件,它会在新选项卡中打开它,而不是在新窗口实例中打开。

或者许多文本编辑器的设置只允许打开一个文本编辑器实例,当打开一个新文件时,它会加载到一个新选项卡中,而不是新窗口中...

许多音乐播放器如 winamp 也这样做...

我最终会把它设置为一项服务,所以它应该会在以后不断地监听命令行参数,但现在主要是为了让我可以同时管理打开特定类型的文件单例应用程序,或者让其他应用程序传递它们想要打开的文件的命令行参数...

此外,如果您知道更好的方法或 .Net 中的 api 来重新路由所有传递的命令行参数,以处理始终运行的服务事件,我可以使用它...但是我'我还想保持这种跨平台性,这样它就可以在 Linux/Mac on Mono 上运行(如果可能的话),而无需管理两个或更多代码库...

最佳答案

这是我用来实现您正在寻找的确切功能的文章,它还允许您传输命令行参数。

Single-Instance C# Application - for .NET 2.0

关于c# - C# 中的 .Net/Mono Singleton(服务/服务器?) - 检测我的 .net 应用程序是否已在运行并将命令行参数传递给它,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/810181/

相关文章:

c# - 将绑定(bind)重定向配置应用于 pythonnet

.net - 如何使用流利验证来验证包含更多相同类型对象的对象?

c# - CaSTLe.Windsor 3.1 - 组件激活器 : could not proxy <FactoryName>

c# - 无法在 Windows 7 中编译 C#

asp.net - Cloud Optimized ASP.Net vNext 和普通版有什么区别?

c# - 将 C# 哈希函数转换为 PHP

c# - 如何在局部 View 中获取模型属性名称

c# - 如何创建一个一次只能从一个线程执行的异步方法?

c# - 缩小规模时,Azure 上跨自动缩放实例的 SignalR 负载平衡会发生什么情况?

c# - IDE 用于 Linux 上的 C# 开发?