我有以下代码,其中我有一个TextBox
用户用来输入文件名。我想要发生的是,当用户键入文件名时,搜索不会发生,直到他/她停止/暂停键入,类似于在Windows资源管理器,Outlook等中搜索的方式。
使用下面的代码,我收到以下错误...
用户代码未处理InvalidOperationException
类型' System.InvalidOperationException'的例外情况发生在 WindowsBase.dll但未在用户代码中处理
其他信息:调用线程无法访问此对象 因为另一个线程拥有它。
错误指向var fName = inputFileName.Text;
方法中的第findFile()
行。
知道可能出现什么问题吗?
namespace FileFinder
{
public partial class MainWindow : Window
{
Timer timer = new Timer();
public MainWindow()
{
InitializeComponent();
timer.Elapsed += new ElapsedEventHandler(TimerEvent);
timer.Interval = 1000;
timer.Enabled = true;
timer.Stop();
}
private void inputFileName_TextChanged(object sender, TextChangedEventArgs e)
{
timer.Stop();
timer.Start();
}
public void TimerEvent(object source, ElapsedEventArgs e)
{
timer.Stop();
findFile();
}
private void findFile()
{
var fType = ".pdf";
var fName = inputFileName.Text; // error points to this line
var fileName = fName.Trim() + fType;
var file = Directory.GetFiles(@"C:\SomeFolder\", fileName, SearchOption.AllDirectories).FirstOrDefault();
if (file == null) {
myButton.Background = Brushes.Red;
}
else {
myButton.Background = Brushes.Green;
}
}
}
}