人力検索はてな
モバイル版を表示しています。PC版はこちら
i-mobile

VS2005 VCあるいはVBのプログラミングについて教えてください。指定した時間以降はプログラム内のコード、あるいは関数を実行、その後、指定した時間にこのコードあるいは関数を停止したいのですが、どのようにコーディングすればよろしいでしょうか?関数と書きましたがスレッドでもかまいません。
定期的に時間を取得して(タイマーをキーとして)比較し、開始、終了を行うことは可能ですが、通常の時間指定バッチ制御プログラムはもう少し違ったことをやっているのかなとおもって聞いています。

よろしくお願いします。

●質問者: mai_mai_mail
●カテゴリ:コンピュータ インターネット
✍キーワード:VB VC キー コーディング コード
○ 状態 :終了
└ 回答数 : 2/2件

▽最新の回答へ

1 ● hakkyoku
●35ポイント

期待されている答えじゃないかもしれませんが

Windows タスクを利用すれば良いのではないでしょうか

http://www.atmarkit.co.jp/fwin2k/win2ktips/335tasksched/tasksche...


1.フォームロードイベントに実行したい処理を記述して

処理が終了したらアプリケーションを終了させる様に記述する

2.1のexeファイルを作成する

3.1?2の手順で目的の処理別にexeファイルを複数作成する

4.作成したexeファイルをタスクで指定した時間に起動させる

◎質問者からの返答

丁寧なご回答ありがとうございます。きちっと書けばよかったのですが、今回の質問のキーは終了時間も指定できるかでした。たとえば、ループ(WAIT)しているEXEの場合は明示的に終了時刻を設定しないと終わらないので。


2 ● ardarim
●35ポイント

Windowsにはスケジュール管理するAPIはありませんので、自分でプログラムで実現することになります。例えばこんな感じになるかと思います。

1)現在時刻を取得

2)起動時刻と現在時刻の差分(待ち時間)を取得

3)待ち時間分待つ

4)対象のスレッドを起動する

5)現在時刻を取得

6)終了時刻と現在時刻の差分(待ち時間)を取得

7)待ち時間分待つ

8)対象のスレッドを終了する

関数を実行したい場合は、関数を実行するだけのスレッドを起動することになります。


スレッドの終了は、基本的にはイベントなどのスレッド間通信の仕組みで実現することになります。

呼び出される側(スレッドまたは関数)と通信する仕組みがない場合はTerminateThreadなどのAPIで強制的に終了するしかありませんが、この場合呼び出される側で終了処理ができませんので、ステートレスな処理しかしないのであれば問題ありませんが、ファイルやデータベースを操作する処理の場合は強制終了で問題が起きる可能性があります。

関連質問


●質問をもっと探す●



0.人力検索はてなトップ
8.このページを友達に紹介
9.このページの先頭へ
対応機種一覧
お問い合わせ
ヘルプ/お知らせ
ログイン
無料ユーザー登録
はてなトップ