【问题标题】:Passing string between 2 C# application instances在 2 个 C# 应用程序实例之间传递字符串
【发布时间】:2014-05-30 14:26:38
【问题描述】:

我构建了一个媒体播放器,该媒体播放器与多种媒体文件类型相关联。
每次用户打开媒体文件时,我都会检查我的播放器是否打开。
我设法阻止打开两个实例,但我想将文件路径传递给已打开的实例。

我正在使用互斥锁来防止打开,并且我一直在尝试使用 SendMessage 来传递字符串。
最好的方法是什么?

【问题讨论】:

  • 有很多技术可供您使用,包括 WCF、MSMQ 和 Remoting。

标签: c# single-instance


【解决方案1】:

试试named pipes,即NamedPipeServerStream & NamedPipeClientStreamhere 也提供了一些一般概述,尽管在您的情况下,基本的 write-to-temp-lock-file/read-from-temp-lock-file 可能不是一个坏主意。

【讨论】:

  • 这需要框架 3.5,我需要它是 FW2。
  • @user1689604 什么是 FW2?看到编辑了,临时文件就足够了吗?
  • 框架2。写入临时文件是不够的:首先,我怎么知道何时读取它?其次,它真的很乱。
  • 锁定文件足以支持 Tomcat、TeamCity、Vim 等。我认为您的媒体播放器没有比这更特别的了。加上名称管道不是 .NET 3.5,C# 包装器是,您可以做一些 CreateNamedPipe PInvoke 魔术,请参阅“此处”链接示例。
  • 它仍然没有回答第一个问题-我仍然需要知道何时阅读它。
【解决方案2】:

我认为一个好方法是在您的媒体播放器中创建 WCF 服务。 您将可以轻松地与它交流。 查看ServiceHost

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-05-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多