[英]real-time search in textbox
我有一個文本框,用戶在其中輸入搜索字符串,然后程序在后台工作線程上搜索該字符串。
現在,我正在重新使用相同的舊線程(並且僅在線程完成/取消后才等待進行新搜索)。
如果我每次想進行搜索時都可以創建一個新線程,我會容易得多,因為這樣一來,在進行搜索之前,我不需要等待另一個線程完成。
每次更改文本時都會進行搜索(事件textbox.TextChanged)-這意味着有很多新的線程和已處置的線程...
這是可行的策略,還是我應該繼續重用同一線程(為大量潛在的錯誤留出空間)?
這是C#4.0中的Win-form項目
我有一些建議:
如果您具有自然的異步搜索系統(例如Entity Framework async API),則使用Task
;如果不使用ThreadPool
,則使用Task
。
在textbox.TextChanged
事件中啟動一個計時器,並在每次文本更改時將其重置,如果計時器到達該計時器結束(1秒),然后嘗試搜索,則這種方法避免了在快速鍵入abc
時搜索a
, ab
和abc
,搜索abc
將一個時間戳記附加到每個搜索線程,並在准備好結果后將其保存在您的UI中,如果某個線程的結果已准備好並且當前結果時間戳大於准備就緒的時間戳記,則忽略該結果。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.