System.Threading.Timer Callback bliver ikke kaldt
Hej Eksperter,Jeg er ved, at lave en funktion som skal køre på bestemte tidpunkter hver dag. Tidspunkterne bliver hentet fra et textfield, og bliver lagt i en liste, som jeg derefter looper igennem og starter en timer på de tidspunkter listet i listen. Mit problem er, at efter det delay, som jeg har sat på timeren er udløbet, kører min method ikke. Men hvis jeg sætter delay til 0, kører de alle uden problemer.
Her er koden:
private void SetTimers()
{
try
{
List<string> Hours = new List<string>(
Settings["StatueWarHours"].Split(new string[] { "\r\n" },
StringSplitOptions.RemoveEmptyEntries));
foreach (string hourMinute in Hours)
{
string[] arrHourMinute = hourMinute.Split(':');
int hour = arrHourMinute[0].ToInt();
int minute = arrHourMinute[1].ToInt();
hour = hour + 1;
if (hour > 24) hour = hour - 24;
var dt = new DateTime(DateTime.Now.Year, DateTime.Now.Month, DateTime.Now.Day, hour, minute, 0);
if (DateTime.Now.CompareTo(dt) > 0)
dt = dt.AddHours(24);
StartTimer(dt);
}
}
catch (Exception ex)
{
AI.Log(Parent, "Something went wrong", ex);
}
}
Funktionen til, at starte timer:
private void StartTimer(DateTime dt)
{
try
{
TimerCallback tcb = new TimerCallback(MedalReward);
TimeSpan start = dt.Subtract(DateTime.Now);
AI.Log(Parent, "Hmm.? " + start.ToString(), null);
new System.Threading.Timer(tcb, null, start, TimeSpan.FromHours(24));
AI.Log(Parent, "Added new timer " + dt, null);
}
catch (Exception ex) {
AI.Log(Parent, "Exception occured", ex);
}
}
Som sagt, hvis jeg sætter Delay på System.Threading.Timer til "New TimeSpan(0)" så kører alle timers, ihvertifald første gang, men ellers kører de ikke.
Hvad har jeg gjort galt :D?
Tak på forhånd.