我有一些c#应用程序,我必须修改。 当我修改某些方法时,我需要知道是否应该使其成为线程安全的。 如何检查是否可以从不同的线程调用特定方法?有没有静态分析工具?
我尝试运行我的应用程序并在任务管理器中发现它包含5个线程。我已经扫描了源代码,到目前为止应用程序应该是单线程的。为什么有5个线程?可能.net包含一些“服务”线程?如何查看谁创建了这5个线程以及它们在做什么?有没有运行时分析实用程序?
由于
答案 0 :(得分:1)
你可以做的一件事,你是调试器:goto Debug |全部中断,设置一个窗口查看线程,另一个窗口查看调用堆栈。确保您使用的是Microsoft符号服务器(可以查看调用堆栈)。然后单击每个线程并查看其调用堆栈。查看是否有任何调用堆栈包含您的应用程序代码。 .NET确实为你的应用添加了一些线程,其中一个是Finalizer线程,我不是其他线程,而是我的头脑。
另一种选择,在特定方法中粘贴一个断点,每当它被击中时,要么查看线程窗口中的当前线程,要么配置断点以打印出当前线程ID而不是中断,这样你以后可以检查输出窗口文本。
显然这并不全面,但这是一个开始。
答案 1 :(得分:1)
唯一可行的方法是了解系统的设计,而不是任何工具都可以这样做。您只能通过阅读代码来完成此操作。