企业网站手机网站建设,泉州惠安网站建设,做线上网站的风险分析,深圳网站建设企业在 WinForm 中#xff0c;UI 更新通常是在 UI 线程上进行的#xff0c;如果你在 UI 线程之外的地方修改了 UI 元素#xff0c;可能会导致更新有延迟#xff0c;单纯的使用delegate也不能及时的更新UI。经实践#xff0c;最终实现方案如下#xff1a; this.Invoke((Method…在 WinForm 中UI 更新通常是在 UI 线程上进行的如果你在 UI 线程之外的地方修改了 UI 元素可能会导致更新有延迟单纯的使用delegate也不能及时的更新UI。经实践最终实现方案如下 this.Invoke((MethodInvoker)delegate//跨线程访问需放在委托中{skinListBox1.BeginUpdate();skinListBox1.Items[StuIndex].Text 此行为示例刷新UI的逻辑;skinListBox1.EndUpdate();});
这其中需要注意的是
1通过调用 BeginUpdate 方法控件将暂时停止绘制然后你可以执行修改操作。最后调用 EndUpdate 方法重新启用绘制从而一次性更新界面避免多次绘制导致的延迟。
2并非所有的 WinForm控件都直接提供了 BeginUpdate() 方法对未提供此方法的控件可考虑暂时禁用界面重绘待逻辑操作完之后再开启这一条为思路未实践。
3跨线程的访问需要放在委托中。否则会报错具体在本示例中会提示线程间操作无效: 从不是创建控件skinListBox1的线程访问它。