C# 遅延プログラム遅延
2022-02-08 03:40:01
Sleep(), there are too many disadvantages, so I won't talk about it. Use While (1) this consumes system resources card can not, so the use of events blocking is the best. But blocking UI will be stuck to create a new thread of their own.
1. Create a new thread for functions that require a delay, or the UI will definitely get stuck.
2. Use AutoResetEven to block threads.
3, then use the system (must be the system) timer, to time the thread, and finally depart to turn on blocking.
4. Finally dispose timer, this timer resets old friends
AutoResetEvent MyDelayEvent = new AutoResetEvent(false); //define event
public void myDealyTime(int time)
{
Timers MyDelayTimer = new System.Timers.Timer(time); //set timer
//call the delay function to set and start the delay timer, then wait.
//MyDelayTimer.Interval = time;
MyDelayTimer.Elapsed += new System.Timers.ElapsedEventHandler(Timer_TimesUp);
MyDelayTimer.AutoReset = true; //Every time Elapsed event is triggered once (false), or always triggered (true), to use true will reset the time.
MyDelayTimer.Enabled = true; //Whether to trigger the Elapsed event
MyDelayTimer.Start();
MyDelayEvent.WaitOne();
MyDelayTimer.Dispose();
Console.WriteLine("aa");
}
private void Timer_TimesUp(object sender, System.Timers.ElapsedEventArgs e)
{
MyDelayEvent.Set();
Console.WriteLine("bb");
}
First time blogger, please reply more often.
3, then use the system (must be the system) timer, to time the thread, and finally depart to turn on blocking.
4. Finally dispose timer, this timer resets old friends
AutoResetEvent MyDelayEvent = new AutoResetEvent(false); //define event public void myDealyTime(int time) { Timers MyDelayTimer = new System.Timers.Timer(time); //set timer //call the delay function to set and start the delay timer, then wait. //MyDelayTimer.Interval = time; MyDelayTimer.Elapsed += new System.Timers.ElapsedEventHandler(Timer_TimesUp); MyDelayTimer.AutoReset = true; //Every time Elapsed event is triggered once (false), or always triggered (true), to use true will reset the time. MyDelayTimer.Enabled = true; //Whether to trigger the Elapsed event MyDelayTimer.Start(); MyDelayEvent.WaitOne(); MyDelayTimer.Dispose(); Console.WriteLine("aa"); } private void Timer_TimesUp(object sender, System.Timers.ElapsedEventArgs e) { MyDelayEvent.Set(); Console.WriteLine("bb"); }
First time blogger, please reply more often.
関連
-
PostionalBindingの役割のCmdletBindingAttribute
-
typedef void (*Fun) (void) 理解 - 関数ポインタ - typedef 関数ポインタ
-
許容メモリサイズは134217728バイトで、問題は解決された php
-
CrtIsValidHeapPointerのエラーの解決法
-
mongodb.service の起動に失敗しました。ユニット mongodb.service が見つかりませんでした。
-
pipの実行エラーです。ランチャーで致命的なエラーが発生しました。Unable to create process using '"'
-
輸出が定義されていない
-
javaで引用符"が"に変換される問題
-
Androidアプリケーション開発 - ビープ音とバイブレーションによる警告の実装
-
フロントエンドのhttpリクエストタイムアウトの概要について
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
解決策:matlab スレッド "AWT-EventQueue-0" で例外発生 java.lang.OutOfMemoryError: Javaヒープ
-
error: expect unqualified-id before 'delete' void delete(node* p,char a) ^.
-
fatal: リモートが見つからなかった refs/heads/cm-13.0
-
Mac コンソールのアイデア mvn コマンドが見つかりません。
-
OSError: [Errno 98] アドレスはすでに使用中です(エラーは解決されました)
-
error: '*' のメンバー '*' の要求が、クラス型でない '*' である。
-
アセンブリノート No.2 - jnz (または jz ) を実行するためにテストを使用する方法
-
python problem: UnicodeDecodeError: 'ascii' codec can't decode byte 0xe8 in position
-
ユニティ再生gif
-
C#のAssyInfo.csファイル 詳細説明