我遇到的问题在某种程度上更像是一种好奇而不是错误,尽管我非常想解决这个问题。
我在C#Winform中有一个面板,它有大约100个设备的图形表示,由带有位图的按钮表示。
启动时,软件扫描RS485总线并在屏幕上创建这些设备。
不幸的是,我注意到,在扫描功能结束时,设备停止显示的速度很快,然后似乎有一个口吃,它们都出现了。
我对此的预感是扫描功能已经完成,已经返回到其调用者,该调用者已经转到另一个函数,该函数现在占用CPU时间从UI线程中获取资源。
只是想知道是否有人有任何想法如何在屏幕完全更新之前阻止软件从扫描功能返回。
非常感谢任何想法/提示。
三江源,
大卫
答案 0 :(得分:1)
听起来就像在扫描过程中一样,您可以在找到它们时创建按钮。相反,进行扫描,存储数据,扫描完成后,然后开始绘制按钮。
理想情况下,在BackgroundWorker线程中进行扫描,并将{ID:1}}中的RS485设备存储在某些类型的列表中List<IRS485Device>
,同时触发ProgressChanged events以更新进度指示器你的小组。到达RunWorkerCompleted后,您可以从面板中删除进度指示器,然后调用例程,从您在扫描中发现的所有数据中提取按钮。