我来找你看看有没有人有办法解决我在迁移到ActiveMQ时遇到的问题。我正在使用ActiveMQ在这个项目中发送通知(在C#中),在完成实现后,我发现了一些关于线程问题的错误。(我知道该异常的解决方案是使用"if this.InvokeRequired.... etc",但我的问题是:
有没有办法找到需要这个调用的所有方法?
当然,我可以一步一步地检查由通知触发的所有事件,但是,除了花费我太多时间的事实之外,它不能解决我未来的编程错误。
我想有一个更好的方法来解决这个问题,但我现在想不出来。你以前遇到过这个问题吗?
非常感谢您的帮助
发布于 2009-06-11 06:46:09
不是的。没有自动化的方法可以做到这一点,当然,除非你从一开始就建立了一个测试驱动的项目。在这种情况下,您可以添加一些条件来测试线程的正确性。
软件无法推断出您的意图,除非是以非常具体的方式(例如FxCop,以及集成开发环境对某些事情的警告)。你所写的并不一定是你想要写的。你实际上是在要求一个能弄清楚你想要做什么的软件。
知道是否需要调用的唯一方法是知道任何给定函数在其中操作的上下文。如果它在后台线程上运行,并且您正在调用需要在主线程上运行的代码(例如GUI代码),则需要调用。
你必须自己找出答案。
发布于 2009-06-11 06:49:38
并不是说你调用的某些方法需要调用。这取决于您从哪个线程调用这些方法。
如果您在Winforms应用程序中调用UI线程以外的线程上的方法,那么它将需要调用。
根据代码的不同,应该很容易分析从哪个线程发出的调用,特别是当您命名后台线程时(这总是很方便)。但是可能没有一种自动的方法来做到这一点--只需后退一步,看看你的代码。
https://stackoverflow.com/questions/979644
复制相似问题