首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Systems.timer.timer不需要的多线程

Systems.timer.timer不需要的多线程
EN

Stack Overflow用户
提问于 2011-07-15 02:35:23
回答 1查看 251关注 0票数 1

我最近将我的代码从使用windows.forms.timer切换到了systems.timer.timer,这导致了一个多线程错误。我使用计时器来触发一个事件,所以多线程应该不是问题。为了给出更多细节,我在下面实现了计时器:在类的顶部,我有:

代码语言:javascript
复制
Private Shared timr1sec As System.Timers.Timer

当程序加载时(私有子Test_load):

代码语言:javascript
复制
timr1sec = New System.Timers.Timer(1000)
AddHandler timr1sec.Elapsed, AddressOf OnTimedEvent

在OnTimedEvent中,我调用了几个子例程,并使用ListView对象将一些数据写入屏幕。VisualExpress在这段代码的最后一行抛出多线程错误,这是在OnTimedEvent中

代码语言:javascript
复制
    Dim itm As New ListViewItem(str(0))

    itm.SubItems.Add(str(1))
    itm.SubItems.Add(str(2))
    itm.SubItems.Add(str(3))
    itm.SubItems.Add(str(4))
    itm.SubItems.Add(str(5))

    ListView1.Items.AddRange(New ListViewItem() {itm})

你知道这个新计时器是怎么回事吗?为什么VisualExpress会说我在多线程?

EN

回答 1

Stack Overflow用户

发布于 2011-07-15 02:36:29

System.Timers.Timer在线程池线程上引发其Elapsed事件。

如果确实需要,可以在Timers.Timer上设置SynchronizingObject属性,告诉它将其事件编组到UI线程,但这是没有意义的。

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/6698242

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档