問題タブ [system.timers.timer]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
c# - C#system.timers.timerの奇妙な動作
Bully Coordinator 選挙アルゴリズムを実装しようとしています。このアルゴリズムでは、コーディネーターは 10 秒ごとにアライブ メッセージを送信し、すべてのプロセスはアライブを受信するまで少なくとも 14 秒間待機します。その時間内にメッセージを受信しない場合、デッド コーディネーターの選出が開始されます。
問題は、AliveTimer (Timer3_Count) が指数関数的に増加しており、アクティブなプロセスもそれに影響を与えていることです。どうして変な動きをするのかわからない。
最初のコーディネーターが Alive メッセージを送信している場合、カウンターは完全に機能しますが、コーディネーターが選出されなくなった後、奇妙な動作をします。
経過した関数はここにあります。プログラムに何か問題があると思います。すべてを試しました。
そして死んだコーディネーター選挙コードはここにあります
完全なコードはここで見つけることができます Bully Algorithm
注:各プロセスからメッセージをブロードキャストするためだけにパッシブサーバーを使用しています
c# - C#ウィンドウサービスがタイマー機能を呼び出さない
私の Window Service アプリケーションでは、タイマー関数が呼び出されることはありません。サービスを自分のマシンにデプロイし、別の関数にブレークポイントを設定してサービスを Visual Studio にアタッチしました。OnStart()
私の関数が呼び出されなかった 後。
これが私のOnStart()
機能です
2017 年 9 月 12 日更新 : try と catch にイベント ログを追加しました。
この関数は次を呼び出しますtimer1_tick()
。
はtimer1_tick
呼び出されません。助言がありますか?
2017 年 12 月 9 日更新: イベント ログを確認しました。[Windows ログ] > [アプリケーション] の下に、「サービスが正常に開始されました」というメッセージが表示されます。ただし、try-catch ブロックに追加されたイベント ログは表示されません。何かが足りないかどうかわかりません。
デバッグのために、サービスを Visual Studio にアタッチしました。下の画像では、OnStart()
メソッドが呼び出されています。関数Thread.Sleep(30000)
をスキップしないように、プロセスをデバッガーにアタッチするためのバッファー時間を確保するために、を追加しましたOnStart()
タイマーの開始後、TimerTick() 関数にブレークポイントがあり、ヒットすることを期待していますが、決してヒットしません。
c# - System.Timers.Timerの停止/開始タイマーとSynchronizingObjectとロックのどちらを使用しますか?
トップノート:コメントごとに、このメモですべてが機能していると推測できます。実際、私のアプリケーションでは、それらを組み合わせようとしています。ちなみに、反対票を投じる前に、詳細を尋ねることができます。
トップノート 2: ところで、SO は MSO の反対票やクローズ票とは異なり、質問の削除を奨励するため、そうしません。そうしないと、すべての貴重なコメントと回答が削除されます。ここは助け合い、お互いを理解しようとする場所です
これは、linqpad コードの 4 つの異なる実装のうち最も基本的なものです。最初を除いて、他のすべてが望ましい出力を提供します。
詳細を説明していただけますか?
アプリケーションに多くのタイマーがあるため、完全なコードで管理および同期する必要があります。
SynchronizingObject もタイマー停止/開始もロックもなし
与えます:
4 5 6 7 8 9 11 12 13 14 15 15 15 17 18 20 21 22
SynchronizingObject の場合:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20
タイマー付 スタート/ストップ
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20
最後にロック付き
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20
シンクロナイザーは次のようになります。
c# - データベーステーブルに保存された、異なる間隔時間で異なる API を呼び出す
データベーステーブルに保存された別のクライアントからの API のリストがあり、すべての API が呼び出される API の時間間隔が異なります。APIを呼び出すための私のアプローチはどうあるべきですか。API テーブルのリストに新しいデータが追加される場合があります。動的タイマーを使用する必要がありますか?
- クライアントが新しいレコードを追加するために使用するアプリケーション (GUI) があります。
- これらのレコードは、API URL と、その API が呼び出される時刻 (スケジュール) を表します。
- あなたの課題は、クライアントが指定したすべての API を指定されたスケジュール/時間に呼び出すことができるコードを作成することです。