C# と VB.NET の質問掲示板

ASP.NET、C++/CLI、Java 何でもどうぞ

C# と VB.NET の入門サイト

Re[3]: 指定した時間になったら処理を開始する方法を教えてください。


(過去ログ 71 を表示中)

[トピック内 10 記事 (1 - 10 表示)]  << 0 >>

■40926 / inTopicNo.1)  指定した時間になったら処理を開始する方法を教えてください。
  
□投稿者/ ヒカリ (1回)-(2009/09/07(Mon) 15:10:28)

分類:[C#] 

c#で決まった時間(正午)になったら、処理を開始するようにしたいのですが、
ツールボックスのコンポーネントのtimerを使えばいいのでしょうか?
スタートアップさせているのでパソコンさえ起動して入れば、動けばいいです。

Windowsフォームアプリケーションを使用して作っています。

引用返信 編集キー/
■40927 / inTopicNo.2)  Re[1]: 指定した時間になったら処理を開始する方法を教えてください。
□投稿者/ επιστημη (2158回)-(2009/09/07(Mon) 15:19:10)
επιστημη さんの Web サイト
> c#で決まった時間(正午)になったら、処理を開始するようにしたいのですが、
> ツールボックスのコンポーネントのtimerを使えばいいのでしょうか?

いいんじゃないでしょか。
たとえば10秒おきにtimeoutさせ、timeoutのたんびに現在時刻を
手に入れて指定した時刻を過ぎていたらなんかすればいい。

引用返信 編集キー/
■40928 / inTopicNo.3)  Re[2]: 指定した時間になったら処理を開始する方法を教えてください。
□投稿者/ 774RR (386回)-(2009/09/07(Mon) 15:50:18)
そういうのはスケジューラ使うもんだ。
windows ならコントロールパネル→タスク。
プログラムの中で何とかするのは、俺は反対。
引用返信 編集キー/
■40929 / inTopicNo.4)  Re[1]: 指定した時間になったら処理を開始する方法を教えてください。
□投稿者/ 陽昇 (4回)-(2009/09/07(Mon) 16:12:02)
No40926 (ヒカリ さん) に返信
> c#で決まった時間(正午)になったら、処理を開始するようにしたいのですが、
> ツールボックスのコンポーネントのtimerを使えばいいのでしょうか?
> スタートアップさせているのでパソコンさえ起動して入れば、動けばいいです。
>
> Windowsフォームアプリケーションを使用して作っています。
>

774RRさんに同意。

起動された時がその時刻(正午)なので、アプリ側は時刻を気にする(監視する)必要も
スタートアップでアプリを常駐させる必要もないです。


引用返信 編集キー/
■40932 / inTopicNo.5)  Re[3]: 指定した時間になったら処理を開始する方法を教えてください。
□投稿者/ GOD (8回)-(2009/09/07(Mon) 17:18:41)
No40928 (774RR さん) に返信
> プログラムの中で何とかするのは、俺は反対。
>
私は逆にプログラムで やりたい/やってほしい 派。
タスクマネージャはサービスだから運用として止めている可能性もあるしね。
(少なくても私のPCでは止めてます。)

あとこのプログラムですが、例えば12:10に初回起動した場合と、再起動した
場合の動作とか取り決めしておいた方が良いですよ。

引用返信 編集キー/
■40940 / inTopicNo.6)  Re[3]: 指定した時間になったら処理を開始する方法を教えてください。
□投稿者/ ヒカリ (2回)-(2009/09/07(Mon) 20:41:21)
No40928 (774RR さん) に返信
> そういうのはスケジューラ使うもんだ。
> windows ならコントロールパネル→タスク。
> プログラムの中で何とかするのは、俺は反対。

スケジューラを試してみましたが、0x80070005というエラーが出てできませんでした。
いろいろ試してみましたけどできなかったのでプログラムでやりたいです。

やりたいことが通じるか分かりませんが、
if(指定した時間<現在の時刻){
……
……

みたいな感じにできないでしょうか?
「C# タイマー」で検索すると時計の作り方が引っかかりました。
上のように比較してみたいのですが……。

引用返信 編集キー/
■40942 / inTopicNo.7)  Re[4]: 指定した時間になったら処理を開始する方法を教えてください。
□投稿者/ オショウ (318回)-(2009/09/07(Mon) 21:18:59)
No40940 (ヒカリ さん) に返信
> スケジューラを試してみましたが、0x80070005というエラーが出てできませんでした。
> いろいろ試してみましたけどできなかったのでプログラムでやりたいです。

  OSは何?
  VISTAなら権限?

  一度やってエラーしたからやめ・・・なんて勿体ない。

> やりたいことが通じるか分かりませんが、
> if(指定した時間<現在の時刻){
> ……
> ……
>
> みたいな感じにできないでしょうか?
> 「C# タイマー」で検索すると時計の作り方が引っかかりました。
> 上のように比較してみたいのですが……。

  常駐アプリでタイマーとかスレッド使って時間監視もよいですが・・・
  Windowsサービス化してタイマー使って時刻監視し、指定時刻を超えたら
  所定の動作を行う・・・

  なんて方法もあります。(何本も作りましたもので)

  アプリだと不慮の何かで異常終了したら、そのままになりますが、サービス
  だと、仮に異常終了しても即自動再起動させて継続させると言う方法も使え
  るし、楽・・・

  ただ自作だとプログラムミスするとCPU食ってしまう可能性も高いので、
  できればスケジューラーかな〜
  Windowsの仕組みが十分に解っていたらWindowsサービス・・・

  作る楽しさとできた(動いた)感覚を味わいたいのであれば、頑張りましょう!

以上。
引用返信 編集キー/
■40971 / inTopicNo.8)  Re[4]: 指定した時間になったら処理を開始する方法を教えてください。
□投稿者/ Jitta on the way (427回)-(2009/09/08(Tue) 13:09:07)
No40940 (ヒカリ さん) に返信

> やりたいことが通じるか分かりませんが、
> if(指定した時間<現在の時刻){
> ……
> ……
>
> みたいな感じにできないでしょうか?

「感じに」では、通じないです。
その通りに書けばいいと思うのですが、何が問題になっているのでしょう?
1.指定した時刻が文字列なので、現在時間と比較できない?
2.現在時間の参照の仕方がわからない?
3.その他?
引用返信 編集キー/
■40979 / inTopicNo.9)  Re[2]: 指定した時間になったら処理を開始する方法を教えてください。
□投稿者/ kag (1回)-(2009/09/08(Tue) 17:54:59)
2009/09/08(Tue) 17:56:09 編集(投稿者)
WINAPI で良ければ

CreateWaitableTimer()
SetWaitableTimer()

を利用すれば指定した日時まで待てる。

timer = CreateWaitableTimer(...);
while (1) {
    SetWaitableTimer(timer, 指定した日時, ...);
    WaitForSingleObject(handle, INFINITE);
    // 指定した日時になった
    if (MessageBox.Show("明日の同時刻まで待つ?"), YesNo) == Yes) {
        指定した日時 += 1日;
    }
    else {
        break;
    }
}

引用返信 編集キー/
■41270 / inTopicNo.10)  Re[3]: 指定した時間になったら処理を開始する方法を教えてください。
□投稿者/ ヒカリ (3回)-(2009/09/16(Wed) 19:59:51)
No40979 (kag さん) に返信
> 2009/09/08(Tue) 17:56:09 編集(投稿者)
>
> WINAPI で良ければ
>
> CreateWaitableTimer()
> SetWaitableTimer()
>
> を利用すれば指定した日時まで待てる。
>
> timer = CreateWaitableTimer(...);
> while (1) {
> SetWaitableTimer(timer, 指定した日時, ...);
> WaitForSingleObject(handle, INFINITE);
> // 指定した日時になった
> if (MessageBox.Show("明日の同時刻まで待つ?"), YesNo) == Yes) {
> 指定した日時 += 1日;
> }
> else {
> break;
> }
> }

ソース書いてくださってありがとうございます。
がんばってみます。
解決済み
引用返信 編集キー/


トピック内ページ移動 / << 0 >>

このトピックに書きこむ

過去ログには書き込み不可

管理者用

- Child Tree -