gpt4 book ai didi

java - C# 数据到 Java

转载 作者:行者123 更新时间:2023-11-30 03:42:09 25 4
gpt4 key购买 nike

我想检查 Windows 工作站是否已登录或关闭。我在 C# 中找到了解决方案:

public class CheckForWorkstationLocking : IDisposable
{
private SessionSwitchEventHandler sseh;
void SysEventsCheck(object sender, SessionSwitchEventArgs e)
{
switch (e.Reason)
{
case SessionSwitchReason.SessionLock: Console.WriteLine("Lock Encountered"); break;
case SessionSwitchReason.SessionUnlock: Console.WriteLine("UnLock Encountered"); break;
}
}

public void Run()
{
sseh = new SessionSwitchEventHandler(SysEventsCheck);
SystemEvents.SessionSwitch += sseh;
}


#region IDisposable Members

public void Dispose()
{
SystemEvents.SessionSwitch -= sseh;
}

#endregion
}

但最后我将在我的 Java 程序 中需要这个 boolean 值

我已经尝试过以下操作:
我启动了这两个程序,并将 C# 写入一个文件,我可以在几秒钟内检查数据是否已从 java 更改(不需要说这解决方案只是缓慢且不足)

另一个解决方案是:
Java 启动 C# .exe,等待 Java 通过套接字连接到它,并通过打开的连接共享数据。

是否有比使用此套接字接口(interface)解决方案更省力地解决此问题的更好方法?

最佳答案

您无需花费任何复杂的精力即可完成此操作。它可以非常简单。

将 boolean 值保存到 C# 中的文件中,然后使用文件监视程序监视 Java 中的目录。如果有变化,它可以用 Java 读取文件并找到 boolean 值。这样的解决方案不会很昂贵,并且会占用大量 CPU 周期,就像使用 while 循环检查文件的解决方案一样。

Java 代码的开头可以很简单

import static java.nio.file.StandardWatchEventKinds.*;

Path dir = ...;
try {
WatchKey key = dir.register(watcher,
ENTRY_CREATE,
ENTRY_DELETE,
ENTRY_MODIFY);
} catch (IOException x) {
System.err.println(x);
}

关于java - C# 数据到 Java,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26604836/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com