DB를 60 초마다 확인하는 간단한 응용 프로그램을 개발하고 있습니다. 나는 그것을하기 위해 System.Threading.TimerCallback
을 사용한다. 그러나 내가 앱을 돌릴 때, 그것은 한 번만 틱한다. 나는 그것이 작동하지만, m
그냥 한 번 실행 d
를 호출 할 때System.Threading.TimerCallback은 Entity Framework를 사용할 때 한 번만 발생합니다.
private void Form1_Load(object sender, EventArgs e)
{
// Create the delegate for the Timer type.
System.Threading.TimerCallback timeCB = new System.Threading.TimerCallback(d);
// Establish timer settings.
System.Threading.Timer t = new System.Threading.Timer(
timeCB, // The TimerCallback delegate object.
null, // Any info to pass into the called method (null for no info).
0, // Amount of time to wait before starting (in milliseconds).
1000); // Interval of time between calls (in milliseconds).
}
void m(object o)
{
System.Media.SystemSounds.Hand.Play();
SReminderEntities ctx = new SReminderEntities();
var jobs = (from m in ctx.Messages
select m).ToList();
var seljobs = from j in jobs
where j.RemindeTime.Date == DateTime.Now.Date
&& j.RemindeTime.Hour == DateTime.Now.Hour
&& j.RemindeTime.Minute == DateTime.Now.Minute
select j;
foreach (var j in seljobs)
{
// SendGmail("iReminder", j.Text, new string[] { j.User.Email }, "[email protected]");
//this.sendSMS(j.User.Mobile, j.Text);
System.Media.SystemSounds.Hand.Play();
}//foreach
}
void d(object o)
{
MessageBox.Show("Test");
}
: 여기
는 코드입니다. 문제점은 무엇이며 어떻게 해결할 수 있습니까? 고맙습니다.
타이머를 제외한 모든 코드를 삭제하십시오. 틱 핸들러에 MessageBox를 추가합니다. 그것은 여전히 한 번만 발사됩니까? – usr