-2

これは Windows サービスの私のコードです...しかし、残念ながら、メソッド myTimer_Elapsed() は、少なくとも 60 秒後にのみ呼び出されます。サービス開始後。サービスを切り替えたらすぐ始めませんか?

public partial class MyService : ServiceBase
{
    private System.Threading.Thread myWorkingThread;
    private System.Timers.Timer myTimer = new System.Timers.Timer();

    protected override void OnStart(string[] args)
    {
        myWorkingThread = new System.Threading.Thread(PrepareTask);
        myWorkingThread.Start();
    }

    private void PrepareTask()
    {
        myTimer.Elapsed += new System.Timers.ElapsedEventHandler(myTimer_Elapsed);
        myTimer.Interval = 60000;
        myTimer.Start();
        System.Threading.Thread.Sleep(System.Threading.Timeout.Infinite);
    }

    void myTimer_Elapsed(object sender, System.Timers.ElapsedEventArgs e)
    {
        ..my code to prepare binary db files
    BinaryDB rdr = new BinaryDB();
    rdr.ReadFile(...)
    }

}
4

1 に答える 1