2012-02-10 9 views
0

ここにシナリオがあります。
プラットフォーム: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(); 
     } 


問題:値は設定ファイルからインポートなっているが、プログラムがあたりとして実行されていないにもかかわらず
指定された時間スケジュール。
私がやろうとしていること:
プログラムが次回に手動で実行された場合、またはシステム起動時(つまり起動時)に実行されると、以前に設定されたスケジュールが参照され、プログラムはユーザーの介入なしにスケジュールできます。今すぐ最初にユーザーの介入が必要であり、アプリケーションが実行されている限りスケジュールに従って実行されます。
これを行う方法はありますか?これは、プログラムメモリを常駐させるものと呼ばれていますか?

ありがとうございました。

+0

あなたの質問はたくさん持って使用することができ

  • に必要がある場合に
  • は、あなたのプログラムを起動する別々のプログラムを書く言っています無関係な情報のあなたの質問は、私が読んでいるように、「スケジュールを読み込むコードを表示せずに答えることはできません。 – CodeCaster

  • +0

    'checkforTime = new System.Timers.Timer(interval);' 'checkforTime.Elapsed + = new ElapsedEventHandler(checkforTime_Elapsed);'ここで、intervalは時間間隔を格納しているinteger型の変数です。 – OutOfBoundsException

    答えて

    2

    これを自分でインターフェイスに組み込むのではなく、インストーラはこれを設定してWindows Task Schedulerを実行するように設定する必要があります。

    +0

    実際に、アプリケーションはいくつかの他のアクションを開始しています/他のプロセスをロードしています。このスケジューラーはGUI用ではありません。アプリケーションによって開始される他のプロセス用です。 **申し訳ありませんが、私はその質問に言及するのを忘れていました。**したがって、私は指定されたスケジュール設定が満たされたときに特定のプロセスを実装することを目指しています。 Windowsタスクスケジューラを使用すると、完全なGUIが再びロードされます。 – OutOfBoundsException

    0

    基本的には、ユーザーの操作なしに指定した時間にプログラムを起動する方法を聞いているようです。

    1. ジョエルCoehoornそれはあなたがプログラムがアイドル状態にしましょうとThread Timer
    +0

    ここでは、ユーザーがプログラムを停止する危険性があります。ユーザーはWindowsタスクスケジューラが最適なソリューションであり、 'インストーラ'を実行しなくてもこれを実行できるはずです。 – fiestacasey

    関連する問題