2014-05-20 4 views
1

Windows Forms (C#)에서 응용 프로그램을 만들고 레이아웃에서 사용자가 지정된 시간을 정의하는 영역을 설정하려고합니다.C# 특정 시간에 Windows Form을 실행하는 메서드

그런 다음 사용자가 "시작"버튼을 누르면 주어진 시간마다 메소드가 실행됩니다.

가장 쉬운 방법은 무엇입니까?

감사합니다.

+2

가장 쉬운 방법은 타이머입니다. –

+0

프로그램을 24 시간 이상 운영 할 수 있는지 여부에 따라 다릅니다. 예를 들어 서비스와 같은 대화식 프로그램을 만드는 것을 목표로하는 클래스 라이브러리로 전화를 끊어 버리는 경향이 있습니다. –

+0

Timer Control이 크게 도움이 될 것이며 매 시간마다 어떤 메소드가 실행되는지 보려면 Reflection을 사용할 수 있습니다. – stack

답변

1

는 간단한 윈폼 타이머는 해낼 수 있습니다

DateTime runTime; 

public Form1() { 
    InitializeComponent(); 
    DateTime nowTime = DateTime.Now; 
    runTime = new DateTime(nowTime.Year, nowTime.Month, nowTime.Day, 12, 0, 0); 
    timer1.Interval = 500; 
} 

void timer1_Tick(object sender, EventArgs e) { 
    if (DateTime.Now > runTime) { 
    timer1.Stop(); 
    MessageBox.Show("It's time!"); 
    } 
} 

void button1_Click(object sender, EventArgs e) { 
    timer1.Start(); 
} 

는 단순히 시간 및/또는 분으로 런타임 값을 업데이트합니다. 프로그램이 실행되고 있지 않으면 알람이 분명히 트리거되지 않습니다. 한스 (Hans)가 지적했듯이, 그것은 서비스가 필요합니다.

0

테스트를 거치지 않았습니까?

var timer = new System.Timers.Timer((DateTime.Now - (DateTime.Now - TimeSpan.FromHours(DateTime.Now.Hour + 1))).Milliseconds); 
timer.Elapsed += (sender, evt) => 
{ 
    timer.Interval = (DateTime.Now - (DateTime.Now - TimeSpan.FromHours(DateTime.Now.Hour + 1))).Milliseconds; 
    // Do things 
}; 
timer.Start(); 
관련 문제