2

我现在正在开发一个应用程序,它使用一堆外部 DLL 来连接到某处的服务器。奇怪的是,这些 DLL 的公开方法允许连接,但不允许断开连接或关闭。这些库工作正常,除非您在一个块中对服务器进行大量后续调用,所以我决定做的是在 X 次调用后断开连接并重新连接。

然而,问题就在这里。我无法断开连接,因为没有给出断开连接的方法。所以我的问题是,我怎样才能完全杀死这个非托管对象,以便我可以重新创建它?

4

3 回答 3

1

如果您在 C# 中使用非托管资源,您应该让您的类使用非托管资源并与之交互,使用块实现IDisposable、创建和销毁它们using

如果您无法断开连接,取决于您所连接的具体内容,有时将包含非托管资源的变量设置为 null 会清除其中的一些内容。但实际上,如果没有适当的断开/处置方法,您将无能为力。

于 2012-08-09T11:57:24.357 回答
0

您可以手动关闭与服务器的底层连接。如果不了解更多关于您使用的服务(HTTP TCP 等?),我无法再帮助您如何做到这一点。您可以放置​​一个跟踪(如wireshark)并查看正在传输的内容。

底线是他们的软件坏了。不能联系卖家吗?

于 2012-08-09T12:20:44.947 回答
0

我能找到的最佳解决方案是在它自己的线程中运行对外部 DLL 的每个调用,最终在线程结束时被杀死。这是唯一有效的解决方案,因为我无法访问更新的 DLL。

于 2012-10-10T10:35:35.090 回答