teratail header banner
teratail header banner
質問するログイン新規登録

回答編集履歴

1

脱字、記述修正

2020/09/05 10:02

投稿

dodox86
dodox86

スコア9416

answer CHANGED
@@ -1,3 +1,3 @@
1
1
  指定の時刻にプロセスを起動させる方法としては、実運用としてはWindowsのタスクスケジューラを使うのが一般的です。その対象のプログラムでミューテックスなどの同期オブジェクトを使えば、既に起動している場合、起動していない場合のどちらでも対応できるよう、作ることもできます。
2
2
 
3
- `System.Threading.Thread.Sleep()`を使って自力で指定時刻に処理をする場合、若干頼りないですが現時点からその時刻までのミリ秒や`TimeSpan`を自分で計算し、その時刻を意味する時間まで`Sleep`させます。あまり長い間だと誤差が出そうなので、小分けにし、その時間が近づいたら数秒毎に`Sleep`るなどして、正確性をなるべく保つのも良いでしょう。1秒ごとにチェックするという簡単な方法もありますが、1秒ごとにそのプロセス(スレッド)がCPU時間を使うことになるので、消費電力が増えるのは確かです。「勉強の為」と言うことですので、色々と試してみるのも良いのではないでしょうか。C#であれば、各種のタイマークラスの利用も考えてみてください。
3
+ `System.Threading.Thread.Sleep()`を使って自力で指定時刻に処理をする場合、若干頼りないですが現時点からその時刻までのミリ秒や`TimeSpan`を自分で計算し、その時刻を意味する時間まで`Sleep`させます。あまり長い間だと誤差が出そうなので、小分けにし、その時間が近づいたら1~数秒毎に`Sleep`させるなどして、正確性をなるべく保つよう工夫するのも良いでしょう。最初からずっと1秒ごとにチェックするという簡単な方法もありますが、1秒ごとにそのプロセス(スレッド)がCPU時間を使うことになるので、消費電力が増えるのは確かです。「勉強の為」と言うことですので、色々と試してみるのも良いのではないでしょうか。C#であれば、各種のタイマークラスの利用も考えてみてください。