2017-12-07 1 views
2

첫째로 이것은 숙제 임. 우리가 배운 것을 넘어서야하기 때문에 WPM 콘솔 응용 프로그램을 생각했습니다. 나는 많은 것을 검색했다 타이머 그러나 그것은 너무나 나의 학기 동안 나의 머리 위에있다. 그래서 나는 쉬운 방법을 발견했습니다. 문제는 일부 문자열을 호출하여 사용자가 입력하도록하고 끝에 계산을 실행하여 분당 단어를 결정할 수 있기를 원합니다. Task.Factory.StartNew를 사용하여 두 가지 메소드를 실행시켜야한다고 읽었습니다.타이머가 화면에서 실행되는 동안 어떻게 메소드를 실행합니까?

class Program 
{ 
    static void Main(string[] args) 
    { 
     Timer go = new Timer(); 
     WordBank display = new WordBank(); 

     Task.Factory.StartNew(go.timer1_Tick); 
     Task.Factory.StartNew(display.LevelOneWords); 
     Console.ReadKey(); 

    } 
}//end main 

class Timer 
{ 
public Timer() 
{} 
    public void timer1_Tick() 
    { 
     int seconds= 0; 
     DateTime dt = new DateTime(); 

     do 
     { 
      Console.Write("One minute timer: " + dt.AddSeconds(seconds).ToString("ss")); 
      Console.Write("\r"); 
      seconds++; 
      Thread.Sleep(1000);     
     } while (seconds< 60); 
    } 
}//end Timer 

class WordBank 
{ 
public WordBank() 
{ } 

public void LevelOneWords() 
{ 
     string easyWords = "the boy had so much fun at the park."; 
     Console.WriteLine("\n\n", easyWords); 
     Console.ReadKey(); 
} 

프로그램을 실행하면 타이머가 1 초 동안 시작되고 즉시 문자열로 바뀝니다. Task.Factory.StartNew를 잘못 사용하고 있습니까?

+2

임 꽤 확실하지. 왜 당신은 자신의 타이머 클래스를 만들었습니까? 왜 당신은 타이머가 당신의 학습 범위에서 벗어 났지만 당신은 작업/병렬/쓰레딩을 사용하려고한다고 말했습니까? – Dave

답변

1

타이핑하는 동안 타이머를 실행하는 대신 (두 개의 프로그램이 동시에 필요함) 처음에 타이핑을 시작할 때, 타이핑을 끝내고 나서 시간을내어보십시오. IE 다음 TakeUserInputForXSeconds 방법에 대한

static void Main() 
{ 
    // Displays WordBank 
    WordBank display = new WordBank(); 

    var startTime = DateTime.Now; 

    // Let them type for X amount of time 
    var totalWords = TakeUserInputForXSeconds(45); 

    var endTime = DateTime.Now; 

    var wpm = totalWords/(endTime.Subtract(startTime).TotalMinutes); 
} 

는이 게시물의 정보에 보일 것이다 : 당신은 당신의 코드를 달성하기 위해 노력하고 매우 복잡한 보이는 Stop running the code after 15 seconds

+1

나는이 아이디어를 좋아한다. 나는 그것을 시도 할 것이다. @Rescis에게 감사합니다. –