WEB开发网
开发学院软件开发VC 在VisualStudio中使用Windows桌面搜索 阅读

在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”以取消限制。

上一页  3 4 5 6 7 8 9 10  下一页

Tags:VisualStudio 使用 Windows

编辑录入:爽爽 [复制链接] [打 印]
赞助商链接