- - PR -
指定時刻にサービスを起動する
1
投稿者 | 投稿内容 |
---|---|
|
投稿日時: 2008-02-25 00:32
こんにちは。
現在、VB2005で開発をしています。 今回、1日1回処理を行うサービスを作成しようと考えています。 色々と資料を探しては見たのですが、「指定時間に起動する」という 手段が見つかりません。 Timerなどで、時間をチェックする手段ではなく 「指定時間に」という手段があればと思い、質問させて頂きました。 どうぞよろしくお願い致します。 |
|
投稿日時: 2008-02-25 01:36
Service を起動するんですから、当然その対象の service application 以外のものから制御しなければいけないでしょう。例えば task scheduler とかで。
ただ、service を起動する処理もそれなりに時間がかかるものですから、厳密に時刻を指定してとなると事前に service を起動しておき、 service application 側で時刻を判定するような感じにした方がいいんじゃないかと。 _________________ |
|
投稿日時: 2008-02-25 13:07
返答ありがとうございます。
質問の方法が悪かったですね。 サービスはサーバー起動時に自動で開始するようにして VB側で指定時刻にのみ上がる様なイベント等設定できないのかな?と思ったので。 >service application 側で時刻を判定するような感じにした方 これだとやはりTimerなどで間隔をとって判断するしか方法が思いつかないので…。 もう少し調べて、無理そうであればタスクスケジューラーかサービスで時刻判定かで 処理したいと思います。 |
|
投稿日時: 2008-02-25 14:28
動的にスケジューラーに登録できないかと検索してみたのですが
結果は 1)atコマンドで登録する 2)ITask COM オブジェクトで登録する 3)Vista以降であればITaskScheduler2.0で登録する で指定時間にワンショットで登録するのはダメでしょうか 参考になればと思います。 |
|
投稿日時: 2008-02-25 22:02
こんにちは。
VC++にてTimerで以下のようにして指定時刻にTickイベントを拾えました。VBでも同じことが出来ないでしょうか? TimeSpan ts = DateTime:: Parse("2008/02/25 22:00:00") - DateTime::Now; this->timer1->Interval = static_cast<int>(ts.TotalMilliseconds); this->timer1->Enabled = true; |
|
投稿日時: 2008-02-25 22:57
indigo-xさま、くれそんさま
ご返答ありがとうございます。 >動的にタスクスケジューラー これは思いつきませんでした。 >VC++にて… 指定時間から起動時間を差し引いてTimerを起動するということですよね? これでしたら、VBでも可能かと思います。 ただ、サーバ側が1日1回シャットダウンをしないとこのままでは ちょっと用件を満たせないような…。 色々と視野が広がるご意見、ありがたいです。 |
|
投稿日時: 2008-02-26 09:34
立ち上げっ放しであれば、初回Tickイベントのタイミングが決定したあとは、24時間周期というTimer本来の使い方ができます。
具体的にはTickイベント処理の冒頭で以下のようなコードを入れておけばよいかと。 static bool first = true; if (first) { this->timer1->Interval = (24 * 60 * 60 * 1000); first = false; } > 指定時間から起動時間を差し引いてTimerを起動するということですよね? > これでしたら、VBでも可能かと思います。 > ただ、サーバ側が1日1回シャットダウンをしないとこのままでは > ちょっと用件を満たせないような…。 |
1