断点会引入延迟吗?

时间:2010-04-21 14:01:19

标签: c# .net multithreading sapb1

如何在我的代码中设置断点允许以下代码完成,否则将失败。

这是问题所在。

我正在为SAP B1编写附加组件并遇到以下问题。

当我加载表单时,我想在表格'矩阵中输入一些值。

但是没有断点(在加载表单的方法上设置),之后执行的代码部分将失败。该部分代码引用了尚未显示的矩阵,导致异常。这一点都很清楚。但是为什么设置一个断点“解决”了这个问题。

发生了什么事?

我怀疑我的断点在加载和显示我的表单和引用该表​​单元素的部分代码之间引入了一些延迟,但我可能是错的。

4 个答案:

答案 0 :(得分:2)

在调试器下运行会降低您的应用程序速度,即使没有断点也会经常隐藏竞争条件。当您引入断点时,更有可能隐藏竞争条件。这些问题很难解决。您可能希望引入一些简单的日志记录(例如log4net)来查看它的运行情况,而不会影响应用程序,以至于您看到不同的行为。请记住,即使记录也足以改变事物。

答案 1 :(得分:1)

具有断点意味着每次在运行时加载模块时,Visual Studio都会扫描模块以查找可能断点的位置。这必须引入延迟。

答案 2 :(得分:1)

这是基于Windows窗体的应用程序吗? (我担心我对SAP B1一无所知) 尝试将代码放入表单的Load事件(如果尚未存在)。有些控件在分配了句柄后才能正常使用,直到windows消息循环运行几次才会发生。

答案 3 :(得分:1)

断点确实会引入一些延迟。断点是为程序定期执行添加额外指令。硬件和软件断点都为程序的执行添加了一些东西(尽管数量会有很大差异)。

http://en.wikipedia.org/wiki/Breakpoint