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

c# – WPF:如何在具有延迟时间的单独线程中调用方法

发布时间:2020-12-15 17:25:54 所属栏目:百科 来源:网络整理
导读:我有一个TextBox,用户可以在其中输入搜索词.它绑定到我的视图模型中的字符串Term属性.我希望在内容发生变化时进行搜索查询.但我想在一个单独的线程中进行查询并延迟. 例如当用户键入字母时,我想等待0.3秒,如果用户在此时间内(0.3秒)更改输入,计时器将重置并
我有一个TextBox,用户可以在其中输入搜索词.它绑定到我的视图模型中的字符串Term属性.我希望在内容发生变化时进行搜索查询.但我想在一个单独的线程中进行查询并延迟.

例如当用户键入字母时,我想等待0.3秒,如果用户在此时间内(0.3秒)更改输入,计时器将重置并重新开始.否则,我启动一个新线程并执行搜索查询.在执行查询时,如果用户再次更改术语,则中止prev查询并重新开始.

我知道如何在带有线程和Timer类的windows-forms中执行此操作.但我是WPF的新手,我正在寻找是否有为WPF线程功能指定的方法(或者可能是一种具有更好性能的方式).

你知道吗?你能帮助我吗?

解决方法

您可以使用 DispatcherTimer.在每个按键上,如果计时器已经运行,请停止计时器,然后启动计时器.我相信(你应该检查一下!)这将重置它.

如果它触发,则接着在文本框中获取当前值并开始在单独的线程中执行操作(例如,如果您使用的是.NET 4,或者使用BackgroundWorker,或者只是创建一个新线程,则使用Task.Factory.StartNew) .

基本上,将“新线程”部分与“我真的想要做某事”部分分开,将所有内容保留在UI线程中,直到您确定自己确实想要做某事为止(并且您知道它的价值)想用).

(编辑:李大同)

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

    推荐文章
      热点阅读