ここにシナリオがあります。
プラットフォーム:Windowsの
言語:C#
.NETフレームワーク:3.5
IDE:Visual Studioの2008
私はC#で書かれた作業実行可能なプログラムを持っています。時間スケジューリング機能を有する。即ち、ユーザが数字を指定することができるnumericupdown
ボックスと、ユーザが時間間隔(秒、分又は時間)を指定することができるcombobox
とを有する。 このスケジュールはGUI用ではなく、特定のアクション/プロセス用です。
このプログラムは初めて実行されます。ユーザがスケジュールされた実行を再実行するためにある程度の時間を提供した場合、の場合は、のアクションは指定されたスケジュールに従って実行されますが、プログラムが実行されている間のみ実行されます。プログラムが終了すると、スケジュールは失われます。
私が試した試み:
フォームのすべてのコントロールの値を保存している設定ファイルを作成しました。アプリケーションが次回起動されると、この設定ファイルが参照されて、フォーム上のさまざまなコントロール(前述の時間スケジューリングコントロールを含む)に値がロードされます。そして、私はまた、次のコードを使用して、起動中のプログラムを追加しました:
C#を使用して指定されたスケジュールに従ってプログラムを実行する
[RegistryPermissionAttribute(SecurityAction.LinkDemand,Write = @"HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\CurrentVersion\Run")]
private void startup(bool add)
{
RegistryKey key = Registry.LocalMachine.OpenSubKey(@"Software\Microsoft\Windows\CurrentVersion\Run", true);
if (add)
{
key.SetValue("program_name", "\"" + Application.ExecutablePath + "\"");
}
else
key.DeleteValue("program_name");
key.Close();
}
問題:値は設定ファイルからインポートなっているが、プログラムがあたりとして実行されていないにもかかわらず
指定された時間スケジュール。
私がやろうとしていること:
プログラムが次回に手動で実行された場合、またはシステム起動時(つまり起動時)に実行されると、以前に設定されたスケジュールが参照され、プログラムはユーザーの介入なしにスケジュールできます。今すぐ最初にユーザーの介入が必要であり、アプリケーションが実行されている限りスケジュールに従って実行されます。
これを行う方法はありますか?これは、プログラムメモリを常駐させるものと呼ばれていますか?
ありがとうございました。
あなたの質問はたくさん持って使用することができ
'checkforTime = new System.Timers.Timer(interval);' 'checkforTime.Elapsed + = new ElapsedEventHandler(checkforTime_Elapsed);'ここで、intervalは時間間隔を格納しているinteger型の変数です。 – OutOfBoundsException