【发布时间】:2014-04-01 19:44:58
【问题描述】:
我在 C 库上有一个 C# 包装器。 在 C lib 中,我有将回调作为输入的函数。 在 C# 中,我公开了像委托这样的回调。
在正常模式下一切正常,但是当我尝试在远程模式下调用相同的函数时,它会出现异常 无法加载文件或程序集。 我的远程处理方案是这样的
1)SharedLib:我有一个 c# 共享库,它的函数是 C 函数的包装器。 所有函数都在这个库中定义。
2)服务器控制台应用:服务器的作用是从 Shredlib 中获取会话并打开一个端口,以便客户端向服务器请求会话
3)客户端控制台应用程序:客户端监听服务器打开的端口并从服务器获取会话对象。它定义了一个与sharedlib中的委托具有相同签名的函数 在会话对象客户端调用来自 sharedLib 的方法,该方法将回调作为输入。 客户端将具有相同签名的方法的地址传递给来自 sharedLib 的方法的委托,该方法期望回调作为输入。
在此之后我得到了“无法加载文件或程序集”之类的异常。
如果我将 null 传递给将回调作为输入的参数,那么在远程模式下一切正常。 那么任何人都可以帮助在远程模式下使用回调。
【问题讨论】:
-
看看
System.CrossAppDomainDelegate
标签: .net-remoting