parallelSearch.cs
上传用户:ynjin1970
上传日期:2014-10-13
资源大小:6438k
文件大小:4k
源码类别:

中间件编程

开发平台:

Visual C++

  1. using System;
  2. using System.Threading ;
  3. using System.Collections;
  4. namespace WebApplication1
  5. {
  6. /// <summary>
  7. /// 并行搜索的类
  8. /// </summary>
  9. public class parallelSearch
  10. {
  11. private ArrayList _results= null;
  12. private string _keyword;
  13. private DateTime _started;
  14. private DateTime _end;
  15. public parallelSearch()
  16. {
  17. // 
  18. // TODO: 在此处添加构造函数逻辑
  19. //
  20. }
  21. private void addResult(result thisResult)
  22. {
  23. lock(_results)
  24. {_results.Add(thisResult);
  25. }
  26. }
  27. public TimeSpan totalTime
  28. {
  29. get { return _end.Subtract(_started);  }
  30. }
  31. public ArrayList search(string keyword  )
  32. {
  33. if (keyword==null && keyword=="")
  34. return null;
  35. _started=DateTime.Now;
  36. _keyword=keyword;
  37. _results=new ArrayList();
  38. Thread ps1=new Thread (new ThreadStart (searchWebSites));
  39.             Thread ps2=new Thread (new ThreadStart (searchDatabases));
  40. Thread ps3=new Thread (new ThreadStart (searchDirectoryServers));
  41. ps1.Start ();
  42. ps2.Start ();
  43. ps3.Start ();
  44.     ps1.Join ();
  45. ps2.Join ();
  46. ps3.Join ();
  47. _end=DateTime.Now;
  48. return _results;
  49. }
  50. private void searchDatabases()
  51. {
  52. result r = new result("符合查询关键字的记录:""+_keyword+""来自数据库服务器中");
  53. try
  54. {
  55. Thread.Sleep(1000);
  56. r.links.Add( new link("书名- 《你今天心情不好吗?》","HHFDESKTOP"));
  57. Thread.Sleep(1000);
  58. r.links.Add( new link("书名 - 《中国机械设计大典》","HHFDESKTOP"));
  59. Thread.Sleep(1000);
  60. r.links.Add( new link("书名 - 《甲骨文献集成》","HHFDESKTOP"));
  61. r.message="查询结果:" + r.links.Count+ "项";
  62. r.isCompleted =true;
  63. }
  64. catch(ThreadAbortException tae)
  65. {
  66. r.isCompleted =false;
  67. r.message ="查询结果:" + r.links.Count+ "项"+"在操作取消之前";
  68. }
  69. catch(Exception e)
  70. {
  71. r.isCompleted=false;
  72. r.message ="查询结果:" + r.links.Count+ "项"+"在操作出错之前";
  73.           
  74. }
  75. finally 
  76. {
  77. addResult(r);
  78. }
  79. }
  80. private void searchDirectoryServers()
  81. {
  82. result r = new result("符合查询关键字的记录:""+_keyword+""来自目录服务器中");
  83. try
  84. {
  85. Thread.Sleep(1000);
  86. r.links.Add( new link("员工 -书名 张大宝","/"));
  87. r.links.Add( new link("员工 - 书名 刘爱山","/"));
  88. r.message="查询结果::" + r.links.Count+ "项";
  89. r.isCompleted =true;
  90. }
  91. catch(ThreadAbortException tae)
  92. {
  93. r.isCompleted =false;
  94. r.message ="查询结果:" + r.links.Count+ "项"+"在操作取消之前";
  95. }
  96. catch(Exception e)
  97. {
  98. r.isCompleted=false;
  99. r.message ="查询结果:" + r.links.Count+ "项"+"在操作出错之前";
  100.           
  101. }
  102. finally 
  103. {
  104. addResult(r);
  105. }
  106. }
  107. private void searchWebSites()
  108. {
  109. result r = new result("符合查询关键字的记录:""+_keyword+""来自WEB服务器中");
  110. try
  111. {
  112. Thread.Sleep(2000);
  113. r.links.Add( new link("简体中文网页-书名 《国王和国后》","HTTP://WWW.163.COM"));
  114. Thread.Sleep(1000);
  115. r.links.Add( new link("简体中文网页 -书名 《坐井之小青蛙》","HTTP://WWW.163.COM"));
  116. Thread.Sleep(1000);
  117. r.links.Add( new link("简体中文网页 -书名 《激情燃烧的岁月》","HTTP://WWW.163.COM"));
  118. Thread.Sleep(1000);
  119. r.links.Add( new link("简体中文网页 -书名《 林海雪原》","HTTP://WWW.163.COM"));
  120. r.message="查询结果:" + r.links.Count+ "项";
  121. r.isCompleted =true;
  122. }
  123. catch(ThreadAbortException tae)
  124. {
  125.     r.isCompleted =false;
  126. r.message ="查询结果:" + r.links.Count+ "项"+"在操作取消之前";
  127. }
  128. catch(Exception e)
  129. {
  130. r.isCompleted=false;
  131. r.message ="查询结果:" + r.links.Count+ "项"+"在操作出错之前";
  132.           
  133. }
  134. finally 
  135. {
  136. addResult(r);
  137. }
  138. }
  139. }
  140. }