C#의 특정 시간에 경고를 어떻게 생성합니까?
문제
특정 시간에 이벤트를 어떻게 생성 할 수 있습니까? 예를 들어, 오전 8시에 오전 8시 (또는 주어진 시간에 현재 시간을 알려주는 이벤트)를 알려주는 경고를 생성하고 싶다고 가정 해 봅시다.
해결책
사용 System.threading.timer 수업:
var dt = ... // next 8:00 AM from now
var timer = new Timer(callback, null, dt - DateTime.Now, TimeSpan.FromHours(24));
그만큼 callback
대의원은 다음에 오전 8시와 그 후 24 시간마다 불러옵니다.
보다 이렇게 질문 다음 8:00 AM 발생을 계산하는 방법.
다른 팁
DTB의 답변에 대해 자세히 설명하는 것은 이것이 제가 구현 한 방법입니다.
private void Form1_Load(object sender, EventArgs e)
{
System.Threading.TimerCallback callback = new TimerCallback(ProcessTimerEvent);
//first occurrence at
var dt = new DateTime(DateTime.Now.Year, DateTime.Now.Month, DateTime.Now.Day, 10, 0, 0);
if (DateTime.Now < dt)
{
var timer = new System.Threading.Timer(callback, null,
//other occurrences every 24 hours
dt - DateTime.Now, TimeSpan.FromHours(24));
}
}
private void ProcessTimerEvent(object obj)
{
MessageBox.Show("Hi Its Time");
}
프로그램에서 경고를 생성해야합니까? 대체 접근법은 a를 사용하는 것입니다 예정된 작업 (Windows) 경고를 생성합니다. 기본 응용 프로그램의 데이터 파일에서 정보를 수집하는 작은 프로그램을 작성해야 할 수도 있습니다.
이 접근법을 사용하면 몇 가지 주요 이점이 있습니다.
- 기능을 지원하기 위해 코드를 작성할 필요가 없습니다. 운영 체제에 내장 된 것을 사용합니다. 예제는 Windows에 대한 것이지만 다른 OS는 동일한 기능을 가지고 있습니다. 자신의 코드에 개발 및 지원 노력에 집중할 수 있습니다.
- 작업이 시작되기 위해 기본 응용 프로그램을 실행할 필요는 없습니다.
private void Run_Timer()
{
DateTime tday = new DateTime();
tday = DateTime.Today;
TimeSpan Start_Time = new TimeSpan(8,15,0);
DateTime Starter = tday + Start_Time;
Start_Time = new TimeSpan(20, 15, 0);
DateTime Ender = tday + Start_Time;
for (int i = 0; i <= 23; i++)
{
Start_Time = new TimeSpan(i, 15, 0);
tday += Start_Time;
if (((tday - DateTime.Now).TotalMilliseconds > 0) && (tday >= Starter) && (tday <= Ender))
{
Time_To_Look = tday;
timer1.Interval = Convert.ToInt32((tday - DateTime.Now).TotalMilliseconds);
timer1.Start();
MessageBox.Show(Time_To_Look.ToString());
break;
}
}
}
이 기능을 사용하여 타이머를 시간 동안 실행하거나 특정 시간에 실행하도록 변경할 수 있습니다.
제휴하지 않습니다 StackOverflow