【发布时间】:2015-01-29 03:56:54
【问题描述】:
我有一个文本框,用户在其中键入搜索字符串,然后程序在后台工作线程上搜索该字符串。
现在我正在重新使用同一个旧线程(并且只有在线程完成/取消时才等待进行新的搜索)。
如果每次我想进行搜索时都可以创建一个新线程,那我会容易得多 - 因为这样我就不需要在搜索之前等待另一个线程完成。
每次更改文本时都会进行搜索(事件 textbox.TextChanged) - 这意味着有很多新的和已处理的线程...
这是一个可行的策略还是我应该继续重复使用同一个线程(为很多潜在的错误腾出空间)?
这是一个 C# 4.0 中的 win-form 项目
【问题讨论】:
-
使用
Task类。它使用线程池,这将避免创建新线程的大部分开销。 -
The search occurs every time the text is changed,这是一个真正的性能打击,你可以添加一个计时器,比如 1000 毫秒来滴答,在每次击键时重置计时器,只有在用户停止输入后(经过 1000 毫秒直到计时器滴答声)您进行搜索。 -
你真的必须使用后台线程吗?搜索操作需要多长时间?每次搜索都打一个后台线程会导致性能下降。
标签: c# .net multithreading winforms overhead