首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >查找需要InvokeRequired的方法

查找需要InvokeRequired的方法
EN

Stack Overflow用户
提问于 2009-06-11 06:32:30
回答 2查看 482关注 0票数 1

我来找你看看有没有人有办法解决我在迁移到ActiveMQ时遇到的问题。我正在使用ActiveMQ在这个项目中发送通知(在C#中),在完成实现后,我发现了一些关于线程问题的错误。(我知道该异常的解决方案是使用"if this.InvokeRequired.... etc",但我的问题是:

有没有办法找到需要这个调用的所有方法?

当然,我可以一步一步地检查由通知触发的所有事件,但是,除了花费我太多时间的事实之外,它不能解决我未来的编程错误。

我想有一个更好的方法来解决这个问题,但我现在想不出来。你以前遇到过这个问题吗?

非常感谢您的帮助

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2009-06-11 06:46:09

不是的。没有自动化的方法可以做到这一点,当然,除非你从一开始就建立了一个测试驱动的项目。在这种情况下,您可以添加一些条件来测试线程的正确性。

软件无法推断出您的意图,除非是以非常具体的方式(例如FxCop,以及集成开发环境对某些事情的警告)。你所写的并不一定是你想要写的。你实际上是在要求一个能弄清楚你想要做什么的软件。

知道是否需要调用的唯一方法是知道任何给定函数在其中操作的上下文。如果它在后台线程上运行,并且您正在调用需要在主线程上运行的代码(例如GUI代码),则需要调用。

你必须自己找出答案。

票数 3
EN

Stack Overflow用户

发布于 2009-06-11 06:49:38

并不是说你调用的某些方法需要调用。这取决于您从哪个线程调用这些方法。

如果您在Winforms应用程序中调用UI线程以外的线程上的方法,那么它将需要调用。

根据代码的不同,应该很容易分析从哪个线程发出的调用,特别是当您命名后台线程时(这总是很方便)。但是可能没有一种自动的方法来做到这一点--只需后退一步,看看你的代码。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/979644

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档