我有一个具有以下基本架构的应用程序:
注册 .NET 类型 (RemoteObject) 以进行远程访问 (.NET Remoting) 的 Windows 服务 (Service)。 RemoteObject 创建使用 ThreadPool 进行 IO 处理的非 ThreadPool 线程。由于特定原因,必须将 ThreadPool 的大小限制在一个限度内。 GUI 应用程序使用 .NET Remoting 来访问 RemoteObject。
我注意到,如果 ThreadPool 的大小太小,GUI 应用程序在调用 RemoteObject 时将会挂起。
我的问题是,如何找出挂起的原因,以及为什么 RemoteObject 线程会受到 ThreadPool 的影响?
这让我发疯;感谢您的帮助!
最佳答案
我不确定这是否有帮助(我无法判断这是否是您的问题),但如果您想在服务运行时对其进行调试,您可以将其添加到代码中:
#if DEBUG
if (!System.Diagnostics.Debugger.IsAttached)
Debugger.Launch();
#endif
您将看到一个对话框,要求您选择调试器。这是附加到正在运行的服务实例的简单方法。如果不出意外,这将让您在 UI 挂起时中断服务(通过按调试工具栏上的暂停按钮)并检查您的线程和调用堆栈。
关于.net - 如何调试 .NET 远程调用?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/269703/