加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

C#WinForms: – 当UI正在执行其他操作时,为什么没有经过Thread

发布时间:2020-12-16 09:48:21 所属栏目:百科 来源:网络整理
导读:在我的应用程序UI中,我每隔1秒通过 Windows计时器更新一个网格. 当我正在做一些其他UI操作属于另一个窗体表格时,它无法正常工作(这基本上是使用选项卡式表单) 我添加了Timer_Tick事件的跟踪并登录到文件. 当另一个UI操作正在进行时(打开和关闭另一个窗体),我
在我的应用程序UI中,我每隔1秒通过 Windows计时器更新一个网格.

当我正在做一些其他UI操作属于另一个窗体表格时,它无法正常工作(这基本上是使用选项卡式表单)

我添加了Timer_Tick事件的跟踪并登录到文件.

当另一个UI操作正在进行时(打开和关闭另一个窗体),我们发现缺少日志数据. Timer_Tick此时没有按下.

?
有什么建议…?

解决方法

问题是UI在单个线程中运行.在该线程上的任何长时间运行的阻塞操作 – 比如打开表单,运行一些代码以响应按钮单击等 – 将阻止计时器触发.这是单线程编程的本质.

如果您绝对需要每秒运行一次代码,无论UI线程中发生了什么,您都需要使用第二个线程.

相关链接:

> System.Threading.Thread文档
> System.Threading.Tasks.Task文件
> System.Threading.Timer文档

非常重要的是,要从以上任何一种方式与UI进行交互:

> System.Windows.Forms.Control.Invoke方法文档
> System.Windows.Forms.Control.InvokeRequired财产文件

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读