如何启动项目启动而无需调试,如启动调试模式?

时间:2011-03-18 23:13:06

标签: winforms multithreading visual-c++-2010

我正在使用C ++ managed 2010来设计form.h文件中的GUI。 GUI充当从从卡查询数据流的主设备。

按下一个按钮,调用一个函数(在ApplicationIO.cpp文件中),使用API​​ win32(CREATETHREAD(...))创建2个线程:前者用于处理数据流,后者用于GUI上实时grpah上的数据解析和数据监控。

该项目有两种不同的行为:如果它以调试模式启动,它可以在数据绑定期间将GUI控件更新为文本框(使用调用)和图形,相反,当它启动而没有调试时,文本框中没有数据出现,以及数据在图表上显示得很慢。

有没有人解决过类似的问题?有什么建议吗?

1 个答案:

答案 0 :(得分:0)

一个非常经典的错误是经常使用Control :: Begin / Invoke() 。您将使用委托调用请求来泛洪UI线程。 UI更新往往很昂贵,您可以轻松进入消息循环无法执行其低优先级职责的状态。喜欢画画。这很容易发生,每秒调用超过一千次是危险区域,具体取决于代表目标花费的时间。

您可以通过以实际速率发送更新来解决此问题,利用人眼区分它们的能力。每秒25次,更新变成模糊,更新它更快只是浪费cpu周期。这为UI线程留下了大量时间来完成它需要做的事情。

当更新费用昂贵时,这可能仍然不够慢。此时,您需要跳过更新或限制工作线程。请注意,Invoke()会自动限制,BeginInvoke()不会。

相关问题