2011-04-19 1 views
0

프로세스가 진행되는 동안 시간을 ​​표시해야합니다.이 경우에는 00:00:00 형식으로 표시됩니다. 문제는 프로세스가 종료 될 때입니다. 어떻게 멈출 수 있습니까? 타이머.콘솔에 타이머를 표시합니다.

Stopwatch stopwatch = new Stopwatch(); 
stopwatch.Start(); 
bool flag = true; 
    Stopwatch stopwatch = new Stopwatch(); 
      stopwatch.Start(); 
      bool flag = true; 

      while (flag == true) 
      { 
       TimeSpan timeSpan = TimeSpan.FromSeconds(Convert.ToInt32(stopwatch.Elapsed.TotalSeconds)); 
       Console.Write(timeSpan.ToString("c")); 
       Console.Write('\r'); 
       //HERE IS MY PROCESS 

       //flag = false; 

      } 
+0

주 동안 루프에서 "여기가 내 프로세스를 IS") = 시간을 포맷 할 수 있습니다 . 나는 당신이 단지 그것을 한 번만 실행하기를 원한다고 생각합니다. 그래서, stopwatch.Start() ... PROCESS .. stopwatch.Stop()은 프로세스의 경과 시간을 얻기에 충분해야합니다. while 루프는 PROCESS가 스레드가되도록 의도했다는 것을 암시합니다. 그렇다면 그렇게 말해야합니다. – Blazes

답변

1

while 루프 후, 당신은 가능성이 다른 스레드에서() stopwatch.Stop를 호출해야합니다

stopwatch.Stop(); 
0

추가 할 수 있습니다. 스톱워치는 두 가지 모두에서 액세스 할 수 있어야하며 두 가지 사이에 잠금 기능을 제공해야합니다.

+0

몇 가지 코드가 있습니까? – ale

0

종료 할 필요가 없습니다. GC가 메모리를 회수하도록하십시오.
어떤 종류의 중지 또는 종료를 시도하면 중단하거나 중단하는 것이 더 많은 작업을 만듭니다.

백그라운드에서 처리가 진행되지 않으며 Stopwatch 메서드 및 속성을 사용할 때 모든 작업이 완료됩니다. 이는 Stopwatch에 자체 카운터가 없기 때문에 OS 시스템 클럭을 두 번 읽고 빼서 작동합니다.

1

이 시도 : 당신은, 당신은 이미 이제 (밀리 초)을 원하는대로

 { 
      Stopwatch stopWatch = new Stopwatch(); 
      stopWatch.Start(); 
      bool flag = true; 

      while (flag == true) 
      { 
       stopWatch.Stop(); 
       Console.Write(stopWatch.ElapsedMilliseconds + "ms"); 
       Console.Write('\r'); 
       stopWatch.Start(); 
       //HERE IS MY PROCESS 

       //flag = false; 

      } 

      stopWatch.Stop(); 
     } 

당신은 또한

가 실행중인