4

main() メソッドで特定の条件をチェックし、それが真の場合は別のプロセスを実行する ac# wpf アプリケーションがありますが、特定のタイムアウト後にプロセスを開始する必要があります。たとえば、次のようになります。

override OnStartUp()

    {
           if(condition == true)
           {
                ProcessStartInfo p = new ProcessStartInfo("filePath");
                p.Start(); // This should wait for like say 5 seconds and then start.
                  return;   // This will exit the current program.
            }
    }

Thread.Sleep() を使用できますが、現在のプログラムもスリープ状態になります。言い換えれば、現在のプログラムをすぐに終了させ、5 秒後に新しいプロセスを開始させたいということです。

ありがとう!

これは可能ですか?

4

5 に答える 5

4

最初のプロセスが 3 番目のプログラムを作成するとどうなるでしょうか。最初のプログラムはすぐに終了しますが、3 番目のプログラムは 5 秒間スリープしてから 2 番目のプログラムを開始します。

于 2012-09-26T18:04:03.747 に答える
3

いくつかのオプションがあります:

  1. 起動されるプロセスを変更し、そこに遅延を置きます。決まった時間ではなく、「親が終了しました」まで待つこともできます。
  2. Windows 組み込みのスケジュールされたタスク
  3. sleep コマンドを使用してプログラムを実行するバッチ ファイル
于 2012-09-26T18:03:52.083 に答える
1

タスク スケジューラ API を使用して、次の 5 秒後にアプリを起動するワンタイム タスクをセットアップできます。ナイス マネージド ラッパー: taskscheduler.codeplex.com

于 2012-09-26T18:18:55.873 に答える
0

新しいスレッドを作成する必要があります。このスレッドでは、プログラムをブロックすることなく Thread.Sleep を使用できます。

public class MyThread
{
   public static void DoIt()
   {
      Thread.Sleep(100);
      // DO what you need here
   }
}
override OnStartUp()
{
    if(condition == true)
    {
       ThreadStart myThread = new MyThread(wt.DoIt);
       Thread myThread = new Thread(myThread);
       myThread.Start();
    }
}
于 2012-09-26T18:05:48.580 に答える
0

私は非常に強力なものをお勧めします

http://quartznet.sourceforge.net/

すべてのスケジューリングのニーズに対応。

于 2012-09-26T18:06:49.533 に答える