2017-10-09 7 views
-1

ここでは面白い状況があります。言語はVisual Studioを使用してC#です。C#ループoneshot関数

私は実行を続ける関数ループを持っています。

特定のイベントがトリガされた場合、IF文を使用して関数を呼び出す必要があります。

私はこの機能を一定の時間遅れの下で再び呼び出さないようにする方法はありますか?

たとえば、関数Aが呼び出されます。関数Aは、次の20秒間に何があっても呼び出すことはできません。

IF文が存在する場合、20秒後に関数Aを再度呼び出すことができます。

私の電話に文字を送信する機能があります。現在、私のループは超高速ですので、数秒で20回のように自分の電話にテキストを送信します。私はこれを制限したい。 私はまた、別のループを通過するためにwhileループをトリガすることはできません。

サイクルを継続して実行するにはループが必要ですが、一定時間が経過するまで私の電話機のテキスト機能をスキップしてください。

+1

これをコードで実行しようとしていますか?その完璧な初心者の仕事。 –

+0

私は最初に説明したものよりも少し深いと思う。ファンクションAをトリガするイベントは、ループの開始近くにあります。だから、ループの始めに到達するまでにINT割り当てを使用しただけの場合、このintはリセットされます。私のコードは機密情報を持っているので、単にコピーして貼り付けるのは難しいです。私は主に、.Tickコマンドや何かを使ってこれを扱うことができるライブラリを探していた。 – Busta

+1

if文を使った単一のループ。それについては何も敏感でも複雑でもない。 'TimeSpan'と' if(ts.ElapsedMilliSeconds> delay)Function();を使用してください。 –

答えて

1

使用タイマー:

Timer myTimer = new Timer(); 
myTimer.Interval = 200; //double timer interval in ms 
myTimer.Elapsed += myTimer_Elapsed; 
myTimer.Start(); 

が続いmyTimer_Elapsed内のあなたの関数を置く:それはmyTimer.Stopを使用して

void myTimer_Elapsed(object sender, System.Timers.ElapsedEventArgs e) 
    { 
     your_function(); 
    } 

停止を();

+0

この回答によって問題が解決された場合は、答えとして有益に記入してください。ありがとう。 –