在VisualStudio中使用Windows桌面搜索
2007-03-15 21:46:43 来源:WEB开发网核心提示: 因此,添加一个名为 WDSQueryWorker 的新类到加载项项目,在VisualStudio中使用Windows桌面搜索(8),可以将 Run 方法用作线程启动委托参数来创建一个 STA 线程,Run 方法使用 WaitHandle 类等待单独的事件句柄,默认每个类别显示 100 项,
因此,添加一个名为 WDSQueryWorker 的新类到加载项项目,可以将 Run 方法用作线程启动委托参数来创建一个 STA 线程。Run 方法使用 WaitHandle 类等待单独的事件句柄,如下所示:
以下是引用片段:
privatevoidRun(){
try{
while(true){
WaitHandle.WaitAny(_runHandles);
if(_stopped)break;
ProcessEvent();
_runEvent.Reset();
}
}
finally{_stopped=true;}
}
WDSQueryWorker 类还提供一个名为 DoWork 的公共方法,用来设置 Run 方法的等待事件,随后还会在 ProcessEvent 方法中触发查询执行。要查询的字段应在调用 DoWork 之前设置。
WDSQueryWorker 类构造函数采用了三个参数:查询完成时调用的 UI 控件、查询完成委托和查询错误委托。两个委托都通过 Control.Invoke 调用。Invoke 方法可确保委托在控件的 UI 线程上执行。值得一提的是,传递到查询完成委托的参数都包含 _Resultset。另外,查询错误委托参数还包含 Exception 引用。
虽然将查询执行移至单独线程,可以解决某些与运行大型查询相关的 Visual Studio 响应性问题,但仍存在一个有待解决的问题。像提到的那样,控件的 Invoke 方法在控件的 UI 线程上执行委托,并且该线程恰巧是 Visual Studio UI 线程。如果 Windows 桌面搜索返回一个大型结果集,则仍需花费时间填充加载项的结果列表视图。明显的解决方案是限制显示结果。事实上,如果您已启用“根据输入进行搜索”选项,Windows 桌面搜索将只显示每个类别的前六个结果,同时会添加一个“more…”项以显示其余结果。使用“选项”对话框,您可以设置加载项来限制显示结果,比方说,默认每个类别显示 100 项。如果您想看到整个结果集,可将“显示首批结果”的值设置为“0”以取消限制。
Tags:VisualStudio 使用 Windows
编辑录入:爽爽 [复制链接] [打 印]更多精彩
赞助商链接