たとえば、タイマー関数を実行するスレッドがプログラムにあります
Thread PopMonitoringThread = new Thread(new ThreadStart(PopMonitoring));
PopMonitoringThread.Start();
public static void PopMonitoring()
{
TimerCallback callback = new TimerCallback(Tick);
Timer stateTimer = new Timer(callback, null, 0, 1000);
}
//Timer method
static public void Tick(Object stateInfo)
{
try
{
if (Properties.Settings.Default.BatchingMode > 0)
{
if (batchTime.Subtract(DateTime.Now) < TimeSpan.Zero)
{
batchTime = DateTime.Now.AddMinutes(Properties.Settings.Default.BatchingMode);
Console.WriteLine("-----------------------------------------------------");
Process();
Console.WriteLine("Batch Process Run");
Console.WriteLine("-----------------------------------------------------");
}
Console.WriteLine("{0}", DateTime.Now.ToString("h:mm:ss"));
}
Console.WriteLine("Pop3 Monitoring start after: {0}", batchTime.Subtract(DateTime.Now));
}
catch (Exception e)
{
throw e;
}
}
Process()メソッドをコメントアウトすると、タイマーの相互作用は毎秒正常に機能しますが、TickメソッドからProcessメソッドのコメントを外すと、タイマーが機能しなくなります。つまり、Tickメソッドが機能しなくなります。プロセスメソッドコードは完全に機能しています。つまり、コンパイルエラーやランタイムエラーはありません。