在VisualStudio中使用Windows桌面搜索
2007-03-15 21:46:43 来源:WEB开发网核心提示: 以下是引用片段:SearchDesktopClasswdsSearch=newSearchDesktopClass();_Recordsetresult=wdsSearch.ExecuteQuery("Secondary","Rank,FileName,Dis
以下是引用片段:
SearchDesktopClasswdsSearch=newSearchDesktopClass();
_Recordsetresult=wdsSearch.ExecuteQuery(
"Secondary","Rank,FileName,DisplayFolder,Url,PerceivedType",
"RankDESC,DocTitle","Contains(PerceivedType,'document')");
该查询指定了 4 个元素。它针对字符串“Secondary”而执行。逗号分隔列以 Rank 开始,以 PerceivedType 结束。排序的列为 Rank 和 DocTitle。最后,将筛选器设置为检索“document”类型的所有项。该调用实际上转换为对所有其中含有单词“Secondary”的文档的一个请求。
Windows 桌面搜索支持许多内置的列,以进行查询和排序。图 5 中显示了您可以使用的一些常用列。注意,结果将在示例代码中有意按照 Rank 降序排序。这可确保最可能的结果位于结构集的顶部。
后台查询和 UI 更新
早期的设计目标之一是构建一个几乎不影响 Visual Studio 响应性的工具。Windows 桌面搜索运行索引查询时,查询的执行速度会极快。然而根据搜索内容,执行一次查询仍会花费几毫秒到一秒,或更长的时间。若查询是在 Visual Studio 主线程上执行的,那么运行查询时,UI 会出现暂时的锁定。明显的解决方案就是在次级线程上执行查询。
您可能会考虑使用新的 .NET Framework 2.0 BackgroundWorker 类。不幸的是,这行不通。因为该类与 SearchDesktopClass 及其 Windows Desktop Search COM 对象不兼容。尝试使用 BackgroundWorker 执行操作会产生 InvalidCastException 异常。要在次级线程上使用 SearchDesktopClass,您就必须使用单线程单元 (STA) 线程。BackgroundWorker 可以使用 .NET ThreadPool,默认情况下,其中会包含多线程单元 (MTA) 线程。
Tags:VisualStudio 使用 Windows
编辑录入:爽爽 [复制链接] [打 印]更多精彩
赞助商链接