首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >是否从外部应用程序在C#中引发事件?

是否从外部应用程序在C#中引发事件?
EN

Stack Overflow用户
提问于 2010-09-28 03:56:53
回答 4查看 1.4K关注 0票数 6

有没有办法在C#中从外部应用程序引发事件?尤其是来自Ruby的?我需要从rails应用程序在C#中执行一些操作。

EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2010-09-28 04:01:20

我假设您所说的“外部应用程序”指的是C#代码的进程空间之外的内容。另外,我假设您指的不是C#事件--这不是一个存在于.NET实现域之外的概念--它们不是可以从代码外部访问的东西。

因此,这个问题的一般答案是“是的,它是可能的”--但由于您实际上是在尝试发送进程间通知,因此您将需要使用某种IPC mechanism

.NET提供了丰富的应用程序接口来执行进程间通信,范围从命名管道到分布式组件,再到低级网络协议。您使用哪种方法取决于这些进程需要通信的环境(在一台机器上、跨intranet上的机器、通过internet等)。它还将取决于您交换的信息类型以及您愿意花费多少努力。对于.NET 3.5应用程序,您通常可以使用WCF as the unifying framework找到受支持的实现。

显然,所有这一切都取决于您修改要在其中引发事件的.NET应用程序的实现(请阅读源代码)的能力。如果您不能做到这一点,并且该代码中没有现有的IPC机制,那么您很可能会被卡住。

更新:回应你的评论:

你会推荐什么,容易和时间优先。这两个应用程序在同一台机器上运行,我自己编写它们

我会考虑使用Named Pipes。命名管道最初是Unix的一个概念--但它们在Windows上也可用。它们具有不同的简单编程接口(它们类似于处理文件),并且在单机场景中不需要太多使用。

在Ruby方面(我不太熟悉),这里有一些你可能会发现有用的链接:

  • Using Named Pipes for Interprocess Communication In Ruby
  • Communicating Between Ruby and PHP Using Named Pipes

在.NET方面,这里有一些相关链接可供浏览以获取更多信息:

票数 6
EN

Stack Overflow用户

发布于 2010-09-28 03:59:37

一个显而易见的解决方案是使用各种网络消息。要么是短暂的TCP/IP连接,要么是一个简单的UDP数据包--特别是当两个应用程序都在同一主机上时。

C#应用程序将接受连接(如果是TCP),从套接字读取事件并最终处理它们。

票数 1
EN

Stack Overflow用户

发布于 2010-09-28 04:02:15

为了扩展Martin的回答,您可以考虑一种消息传递协议,该协议具有两种目标语言可用的库。我想到了像Stomp这样的东西。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/3807325

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档