ThreadStatus.cs 3.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132
  1. //时间:20200611
  2. //作者:郝爽
  3. //功能:测量状态
  4. using System;
  5. using System.Collections.Generic;
  6. using System.Linq;
  7. using System.Text;
  8. using System.Threading.Tasks;
  9. namespace MeasureThread
  10. {
  11. //测试结果
  12. public enum ThreadState
  13. {
  14. Ready, //就绪
  15. InProcess, //进行中
  16. Waiting, //等待,半自动化测试过程的状态
  17. Failed, //失败
  18. Success //成功
  19. }
  20. //计算时间类型
  21. public enum THREAD_TIME_TYPE
  22. {
  23. START = 1,
  24. STOPPED = 2,
  25. }
  26. public class ThreadStatus
  27. {
  28. //线程状态
  29. private ThreadState m_threadState;
  30. public ThreadState STATE
  31. {
  32. get { return this.m_threadState; }
  33. set { this.m_threadState = value; }
  34. }
  35. //线程开始的时间
  36. private DateTime m_startTime;
  37. public DateTime StartTime
  38. {
  39. get { return this.m_startTime; }
  40. set { this.m_startTime = value; }
  41. }
  42. //线程结束的时间
  43. private DateTime m_endTime;
  44. public DateTime EndTime
  45. {
  46. get { return this.m_endTime; }
  47. set { this.m_endTime = value; }
  48. }
  49. //线程使用的时间
  50. private TimeSpan m_UsedTime;
  51. public TimeSpan UsedTime
  52. {
  53. get { return this.m_UsedTime; }
  54. set { this.m_UsedTime = value; }
  55. }
  56. //线程当前开始的时间
  57. private DateTime m_CurrentStartTime;
  58. public DateTime CurrentStartTime
  59. {
  60. get { return this.m_CurrentStartTime; }
  61. set { this.m_CurrentStartTime = value; }
  62. }
  63. //构造函数
  64. public ThreadStatus()
  65. {
  66. Init();
  67. }
  68. public void Init()
  69. {
  70. m_threadState = ThreadState.Ready;
  71. m_startTime = new DateTime();
  72. m_endTime = new DateTime();
  73. m_CurrentStartTime = new DateTime();
  74. m_UsedTime = m_endTime - m_startTime;
  75. }
  76. // 计算时间
  77. public bool ComputeTime(THREAD_TIME_TYPE a_nType)
  78. {
  79. if (a_nType == THREAD_TIME_TYPE.START)
  80. {
  81. if (m_startTime == new DateTime())
  82. {
  83. m_startTime = DateTime.Now;
  84. m_CurrentStartTime = m_startTime;
  85. }
  86. else
  87. {
  88. m_CurrentStartTime = DateTime.Now;
  89. }
  90. m_endTime = DateTime.Now;
  91. }
  92. else if (a_nType == THREAD_TIME_TYPE.STOPPED)
  93. {
  94. // set current time as end time
  95. m_endTime = DateTime.Now;
  96. // compute used time
  97. TimeSpan timeUsed = new TimeSpan();
  98. if (m_CurrentStartTime == m_startTime)
  99. {
  100. // first compute time
  101. timeUsed = m_endTime - m_startTime;
  102. }
  103. else
  104. {
  105. // not the first compute time
  106. timeUsed = m_UsedTime + ( m_endTime - m_CurrentStartTime);
  107. }
  108. m_UsedTime = timeUsed;
  109. }
  110. else
  111. {
  112. return false;
  113. }
  114. return true;
  115. }
  116. }
  117. }