.net - 如何调试 .NET 远程调用?

标签 .net multithreading remoting

我有一个具有以下基本架构的应用程序:

注册 .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/

相关文章:

c# - .NET 6 (ASP.NET Core 6.0) 从测试项目中获取 Startup 或 Program Assembly

java - 关于 Volatile 这篇文章的问题

java - 声明主方法同步

javascript - 销售人员 : JavaScript Remoting "Uncaught ReferenceError: Visualforce is not defined"

c# - 如何增加 .NET Remoting over TCP 使用的线程数?

c# - 从表中提取时间数据并将其放入TimeSpan

c# - 向基于模型的列表添加值

c# - .NET Core (C#) 中的 AES-256-CBC

c++ - 多线程和内存

c# - 如何跨 AppDomain 将引用作为方法参数传递?