从外部应用程序中提升C#中的事件?

tyb*_*103 6 c# ruby events ruby-on-rails

有没有办法从外部应用程序中引发C#中的事件?特别是来自Ruby?我需要在rails应用程序中使C#发生一些事情.

LBu*_*kin 6

我假设"外部应用程序"是指C#代码的进程空间之外的东西.另外,我假设你没有提到C#事件 - 它们不是.NET实现域之外的概念 - 它们不是可以从代码外部访问的东西.

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

.NET具有丰富的API,用于执行IPC,从命名管道到DCOM,再到TCP/IP等低级网络协议.您使用哪种方法取决于这些流程需要通信的环境(在单台计算机上,跨Intranet上的计算机,通过Internet等).它还取决于您正在交换的信息类型以及您愿意花费多少精力.对于.NET 3.5应用程序,您通常可以使用WCF作为统一框架找到受支持的实现.

显然,所有这些都取决于您是否有能力修改您尝试在其中引发事件的.NET应用程序的实现(读取源代码).如果你不能这样做,并且该代码中没有现有的IPC机制,那么你可能会陷入困境.

更新:回应你的评论:

你会优先考虑轻松和时间.这两个应用程序都在同一台机器上运行,我自己也在编写它们

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

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

在.NET端,以下是一些要探索的相关链接以获取更多信息: