質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
C#

C#はマルチパラダイムプログラミング言語の1つで、命令形・宣言型・関数型・ジェネリック型・コンポーネント指向・オブジェクティブ指向のプログラミング開発すべてに対応しています。

Visual Studio

Microsoft Visual StudioはMicrosoftによる統合開発環境(IDE)です。多種多様なプログラミング言語に対応しています。

Q&A

解決済

2回答

1678閲覧

C# Windows フォームアプリ 指定した時間に実行

sasasakkkk

総合スコア14

C#

C#はマルチパラダイムプログラミング言語の1つで、命令形・宣言型・関数型・ジェネリック型・コンポーネント指向・オブジェクティブ指向のプログラミング開発すべてに対応しています。

Visual Studio

Microsoft Visual StudioはMicrosoftによる統合開発環境(IDE)です。多種多様なプログラミング言語に対応しています。

0グッド

0クリップ

投稿2020/01/29 12:30

現在VisualStudioCommunityを使って
windowsフォームアプリケーションを作成しています。

指定した時刻になると処理を一回だけ走らせるようにしたいのですが
処理が走る時間と指定した時間の誤差がないように正確に(精度よく)実行するには
どのようにすればよいでしょうか?

Timer.Tickで定期的に時間を監視しつづける方法だとPCへの負担が大きいでしょうか?

ご回答宜しくお願い致します。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

YAmaGNZ

2020/01/29 12:48

「精度よく」とはどの程度の精度なのでしょうか? また、そのアプリはずっと起動しておくのですか?
Q71

2020/01/29 12:52

時間監視をしてタスク実行をする、というツールがすでにあるので、普通はタスクスケジューラーを使用することを検討します。それについて調べて、用途に合わないなら、自作します。 精度よくって、PCの時計の精度が、要求を満たしていることは、確認済みでしょうか。
sasasakkkk

2020/01/29 12:55

0.1秒以内の制度だとよいです。 アプリはずっと起動しておいて、アプリ内のある特定の機能のみ指定した時間に実行させたいです。
sasasakkkk

2020/01/29 12:59

タスクスケジューラを調べてみます。ありがとうございます。
guest

回答2

0

ベストアンサー

方法1
起動しているアプリと、そのアプリに信号を送るアプリの2段構成。
タスクスケジューラーで、信号を送るアプリを起動する。
アプリの起動に時間がかかるので、実行時間がずれる心配が大。

方法2
Timerは、時刻を指定してイベントを発することはできないので、起動したい時刻と現在時刻の差を計算する。

方法3
0.1秒刻みで監視する。時間を調べるくらいならさほどの負荷にはならない。
気になるなら方法2とのハイブリッド。5分前くらいまでの大きな待ちと、そこからは細かく監視する。

投稿2020/01/29 13:05

Q71

総合スコア995

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

sasasakkkk

2020/01/29 13:13

タスクスケジューラについて調べたのですが、 【Windowsに標準で入っている自動でソフトなどを起動する機能】 タスクスケジューラでメソッドを実行することは不可能で、アプリの実行だけ可能という 認識でよろしいでしょうか?
Q71

2020/01/30 13:03 編集

主体は、「特定の時間に実行する機能」なのか、「ユーザーと対話的に実行する機能」なのか、どっちでしょう? まぁ、後者だとしても、アプリを2つ作れば解決できますけど。コードは1つで、アプリは2つです。 https://wa3.i-3-i.info/word13321.html
guest

0

現在時間から目的時間(の数秒前?)の差分をタイマに設定して実行させる、というのではどうでしょう

あるいは、タスクスケジューラで目的時間(の数十秒前?)に起動させて、タイミング取って
実行、とか。

投稿2020/01/29 12:35

編集2020/01/29 12:42
y_waiwai

総合スコア87774

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問