Windows Forms (C#)에서 응용 프로그램을 만들고 레이아웃에서 사용자가 지정된 시간을 정의하는 영역을 설정하려고합니다.C# 특정 시간에 Windows Form을 실행하는 메서드
그런 다음 사용자가 "시작"버튼을 누르면 주어진 시간마다 메소드가 실행됩니다.
가장 쉬운 방법은 무엇입니까?
감사합니다.
Windows Forms (C#)에서 응용 프로그램을 만들고 레이아웃에서 사용자가 지정된 시간을 정의하는 영역을 설정하려고합니다.C# 특정 시간에 Windows Form을 실행하는 메서드
그런 다음 사용자가 "시작"버튼을 누르면 주어진 시간마다 메소드가 실행됩니다.
가장 쉬운 방법은 무엇입니까?
감사합니다.
는 간단한 윈폼 타이머는 해낼 수 있습니다
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)가 지적했듯이, 그것은 서비스가 필요합니다.
테스트를 거치지 않았습니까?
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();
가장 쉬운 방법은 타이머입니다. –
프로그램을 24 시간 이상 운영 할 수 있는지 여부에 따라 다릅니다. 예를 들어 서비스와 같은 대화식 프로그램을 만드는 것을 목표로하는 클래스 라이브러리로 전화를 끊어 버리는 경향이 있습니다. –
Timer Control이 크게 도움이 될 것이며 매 시간마다 어떤 메소드가 실행되는지 보려면 Reflection을 사용할 수 있습니다. – stack