.NET 4.5、64 位 Win8
我有两个在 WCF 下运行并托管在 Windows 激活服务下的 MSMQ。
- 执行MSMQ:负责调用一个非托管函数并获取一个指向4GB数组的指针IntPtr以及其他有限大小的变量。这个数组并不那么重要,在它被传递到数据库之前不应该阻塞队列并且让这个队列空闲是一个优先级。将指针传递给 Save MSMQ(假设)。
- 保存 MSMQ:应该通过网络将数组保存到数据库,然后从非托管内存中释放它。
这里的问题是:
- 确保阵列在有害消息和其他队列错误时被释放。这种情况很容易。
- 传递一个 IntPtr 跨应用程序域,这可能是不可能的,我记得,从过去的美好时光,指针值是相对的(并且想到了偏移这个词,或者我正在混合进程和 AppDomains)到应用程序域和安全原因 .NET 可能不允许这样做?这是可能的还是我在做梦,这也是跨域问题还是我的问题有不同的标题?
注意我以前使用过 NetPipes 通信,但是中间有一个队列,所以 NetPipes 不是一个好的解决方案。