【发布时间】:2014-07-25 00:23:59
【问题描述】:
我正在使用 Visual Studio 2012 制作 C# wpf 应用程序。有两个名为 textboxInput 和 textboxOutput 的文本框。我的任务是当我输入 textboxInput 时,它应该通过搜索数据库将详细信息实时带入 textboxOutput。由于这需要一些时间,它会减慢我的打字速度,这是用户所不希望的。
问题是当用户输入“foo”时,它会搜索“f”,然后是“fo”,然后是“foo”。所有这些都有数据库条目。用户只想查看“foo”的详细信息,而不是其他人。但我无法预测他会在哪里停止打字。我想给他流畅的打字而不会滞后。所以我的想法是使用线程。在 testChanged 事件中,我使用 Thread 搜索它,如果它再次出现 textChange 事件(键入另一个字母),它会终止前一个线程并运行一个新线程。
我目前的做法。
private void textBoxInput_TextChanged(object sender, TextChangedEventArgs e){
//textBoxOutput.Text=search(textBoxInput.Text); //previos approach
//Current approach
new Thread(delegate() {search(textBoxInput.Text); }).Start();
}
你能帮我看看里面的代码吗
- 我当前的代码给了我异常“调用线程无法访问这个对象,因为不同的线程拥有它”。如何处理?
- 如何实现之前的线程杀死机制? (我是初学者:))
- 还有其他好方法可以完成我的任务吗?
【问题讨论】:
标签: c# wpf multithreading delegates thread-safety