2016-07-12 2 views
1

5秒間実行されるコードの小さな部分であるスレッドを実行したい。C#で特定の時間スレッドを実行する方法は?同じコードをもう一度実行して5秒間スクリプトを再実行するようなもの

実行は1回である必要があります。実行は特定の時間連続して続行する必要があります。

注:タイマーのようなものは実行しないでください。実行は1回で済むはずです。

本当の問題は:

AHKというスクリプトがあります。 (オートホットキー)。 特定の時間にタスクバーを隠すようなタスクがあります。 スクリプトを変更できません。 私はアプリケーションの部分(C#)で同じものを変更する必要があります。

サンプルコードを試してみた:

void StartConnection() 
{ 
stopwatch.Start(); 
Thread threadObj = new Thread(ThreadFunc); 
threadObj.Start(); 
} 

void ThreadFunc() 
{ 
    for (; stopwatch.Elapsed.TotalSeconds < 6;) 
    { 
     WindowsNativeCalls.HideTaskbar(); 
    } 
} 

は、これを達成するために利用できる他のどのドットネットという概念はありますか?

 private void Button_Click(object sender, RoutedEventArgs e) 
     { 
      System.Threading.Tasks.Task.Factory.StartNew(() => { mycallBack(); }); 
     } 

     private void mycallBack() 
     { 
      System.Diagnostics.Stopwatch stopWatch = new System.Diagnostics.Stopwatch(); 
      stopWatch.Start(); 
      while (true) 
      { 
       System.Diagnostics.Debug.WriteLine("Running !"); 

       if (stopWatch.Elapsed.Seconds >= 5) 
        break; 
      } 

      System.Diagnostics.Debug.WriteLine("Done !"); 
     } 
+1

コードを実行するスレッドを作成したいですか?次に、スレッドを作成し、実行するコードを記述します。そうでなければ、問題が何であるかは非常に不明です。 「特定の時間だけ」、「連続して」、「一回だけ」は、適切な説明なしでは少し矛盾しています。 –

+0

が実際の問題を追加しました。 – raj

+0

ループの開始時からの経過時間をチェックするループをスレッド上で実行します。このコードを書きましたか? – Krease

答えて

0

が、これはあなたの法案に合うかどうかを確認してください。

0

あなたが、私はこのことができます願っていDispatcherTimer

private DispatcherTimer myTimer; 

private void StartMyTimer() 
{ 
    if (myTimer != null) 
     myTimer.Stop(); 

    myTimer = new DispatcherTimer(); 
    myTimer.Interval = TimeSpan.FromSeconds(5);// You can change this for minutes, hours and etc 
    myTimer.Tick += myTimer_Tick; 
    myTimer.Start(); 
} 

void myTimer_Tick(object sender, EventArgs e) 
{ 
    //Do something here every 5 seconds 
} 

を使用することができます。

関連する問題