将一个短字符串从 C#(UWP) 传递到 Java 应用程序的快速方法 [关闭]
Posted
技术标签:
【中文标题】将一个短字符串从 C#(UWP) 传递到 Java 应用程序的快速方法 [关闭]【英文标题】:Fast way to communicate one short string from C#(UWP) to Java application [closed] 【发布时间】:2021-08-27 07:34:51 【问题描述】:我有一个在 Windows 中检查 Toast 通知的 C#(UWP) 应用程序。当它找到一个通知时,我希望它把它的标题(发送通知的应用程序名称)字符串传递给我的 Java 应用程序,这样我就可以运行我的 java 代码,输入是这个字符串。
我尝试的是在 C# 应用程序中找到通知后,使用我的 java 应用程序启动一个 JAR,但从我的测试来看,它最多需要 1500 毫秒。我正在寻找 10 毫秒以下的内容。
实现这一目标的最佳且相当简单的方法是什么?我在 C# 方面不是很有经验。我只使用 C#,因为我认为我无法在 Java 中实现获取 Toast 通知。
【问题讨论】:
我不禁想知道为什么在 Java 中需要 C# 应用程序时会这样做。 如果一切都在本地运行,1500ms 的延迟是很多的。请将您的问题与一些代码相结合,尤其是两个项目中有意义的网络部分。 @Llama 就像我说的,Windows 中的 NotificationListener 在 C# 中可用,在 Java 中不可用。至少官方,微软支持一个 @SSV 没有任何进一步的信息,这听起来像是一个非常糟糕的软件架构。我会用 C# 开发整个解决方案,或者改变数据在您的服务之间流动的方式。每次收到通知时从 C# 服务启动一个进程(Java 进程!)对我来说听起来像是最糟糕的解决方案,没有冒犯。我至少会让 Java 进程成为一个永远在线的守护进程,并使用本地 rpc 调用从 C# 与它通信。不是最好的解决方案,但至少你不应该有这么多的延迟。 @SSV REST API 调用绝对可以更快,但这取决于多种因素,其中一些因素完全超出您的控制 - 如果您对套接字解决方案感到满意,则没有有理由疯狂地拯救一些女士恕我直言。请记住,与 HTTP 请求相比,套接字要昂贵得多(谈到资源)。 【参考方案1】:您需要让 JVM 连续运行以获得较短的响应时间。
一个好的和有据可查的方法可能是将您的 java 代码转换为 REST API 并调用它。 Spring Boot 对于独立服务来说是一个不错的选择
新的 graalvm 编译器可以创建足够快的程序,但我没有这种用法的个人经验。
【讨论】:
以上是关于将一个短字符串从 C#(UWP) 传递到 Java 应用程序的快速方法 [关闭]的主要内容,如果未能解决你的问题,请参考以下文章
如何使用 DLLImport 将字符串从 C# 传递到 C++(以及从 C++ 到 C#)?