在我的计算机上,多个程序正在运行,需要访问 COM 对象提供的 iTunesApp 接口。经过一些测试,我发现某些交互(特别是事件监听)只能在对象的“原始”实例中进行。这意味着如果 iTunes 已经在运行并且我运行,iTunesApp app = new iTunesApp()
我将创建一个 iTunesApp 实例,它可以访问库和播放/暂停等,但不会app.OnPlayerPlayEvent
在触发之类的事件时被调用。如果我想监听事件,我必须在iTunesApp app = new iTunesApp()
iTunes 尚未运行的情况下运行。
所以我对此的解决方案是我只在启动时运行一个程序,启动 iTunes 并iTunesApp
与任何其他需要它的程序共享该对象。不幸的是,该类不可序列化,因此我无法轻松地将其转换为 byte[] 数组。
我的问题是:是否有可能将对象转换为字节数组并通过MemoryMappedFile
或Socket
类似方式共享?我已经尝试BinaryFormatter.Serialize()
过以及ProtoBuf
包装,但都没有奏效。或者是否有一种方法或某种东西可以让我iTunesApp
从正在运行的 iTunes 实例中获取对象?