我正在开发一种软件,需要不断从串口读取数据并向用户显示值。
所以我有一个带循环的线程,不断读取串口。
哪种更新表单控件的正确方法是为了获得流畅的用户体验?
到目前为止,我发现计时器不起作用,因为读取线程阻止它的执行,如果我在线程内创建一个Thread::Sleep(300)
的新线程也不起作用。
BTW,我可能已经注意到,我是c ++ / cli的新手。
答案 0 :(得分:1)
考虑在C ++ / CLI中使用BackgroundWorker组件。在msdn中定义的BackgroundWorker:
BackgroundWorker类允许您对a运行操作 独立的专用线程。下载等耗时的操作 和数据库事务可能会导致您的用户界面(UI) 就好像它们在运行时停止响应一样。当你 想要一个响应式用户界面,你将面临长时间的延迟 通过这样的操作,BackgroundWorker类提供了方便 溶液
将循环代码和代码与DoWork事件中的UI控件进行通信。
查看本教程,了解如何在C ++ / CLI中使用BackgroundWorker
C++/CLI Background Worker Tutorial
但在进入教程之前,我建议您了解.net中的后台工作程序,以便了解其工作原理。