У меня есть текстовое поле, в котором пользователь вводит строку поиска, а затем программа выполняет поиск этой строки в фоновом режиме.поиск в режиме реального времени в текстовом поле
Сейчас я снова использую тот же старый поток (и жду, чтобы сделать новый поиск, только когда поток закончен/отменен).
Мне было бы намного проще, если бы я мог просто создать новый поток каждый раз, когда захочу сделать поиск, потому что тогда мне не нужно будет ждать завершения другого потока, прежде чем делать поиск.
Поиск происходит каждый раз, когда время текст изменяется (событие textbox.TextChanged) - так что это означает много новых и выбывших нитей ...
Является ли это жизнеспособной стратегией, или я должен продолжать повторно использовать тот же самый поток (создает место для множества потенциальных ошибок)?
Это беспроигрышная форма проекта в C# 4.0
Используйте класс 'Task'. Он использует пул потоков, который позволит избежать значительной части накладных расходов при создании нового потока. –
'Поиск происходит каждый раз, когда текст изменяется ', это реальный удар по производительности, вы можете добавить таймер, скажем, 1000 мс, чтобы пометить, сбросить таймер при каждом нажатии клавиши, только после того, как пользователь перестанет печатать (в течение 1000 мс пока таймер не покажет), что вы выполняете поиск. – kennyzx
Должен ли ты действительно использовать фоновый поток? Сколько времени занимает операция поиска? Нажатие фонового потока для каждого поиска приведет к поражению производительности. –