(1)搜索功能采用.NET 4.0所提供的PLINQ完成,使用线程统一取消模型取消操作。
(2)由于搜索是在独立的线程中完成的,因此,更新界面的工作用到了Dispatcher对象,将UI更新代码推送到UI线程中执行。
(3)在查找文件过程中,部分系统文件夹会因权限问题而无法读取文件,故需妥善处理UnauthorizedAccessException异常。
(4)找到文件后,需要将文件名显示在列表中,为此设计了一个FoundFile类封装这些信息。显示工作利用了WPF强大的数据绑定机制。因此让FoundFile类实现INotifyPropertyChanged接口,并且将FoundFile对象放到ObservableCollection泛型集合中,绑定到DataGrid。这里需要指出的是,发现WPF数据绑定支持跨线程更新DataGrid,从而大大地减少了代码编写量。
(5)找到的文件大小是字节,为此,编写一个NumberConverter类,将其转换为常见的K,M、G等,设计WPF数据绑定机制使用它来进行数值转换(详看DataGrid的绑定表达式)