問題タブ [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.

0 投票する
2 に答える
9192 参照

c# - C# - タイマーが終了するまでアプリケーションを一時停止する方法は?

特定の時間待機する必要があるアプリケーションがありますが、必要に応じて現在の操作をキャンセルできる必要もあります。次のコードがあります。

以下は、タイマー終了イベントのイベント ハンドラーです。

while ループは、タイマーが終了するまで、またはキャンセル要求が入力されるまで無限にループします。この機能を保持したいのですが、タイマーが終了するのを待っている間、永遠にループしたくありません。私のタイマーは、数日の間隔で実行するように設定できるため、長時間ループしても意味がありません。

これを行う別の方法はありますか?

私はできることを知っています:

ただし、これはブロックされ、キャンセル要求を出すことができません。

編集:ここで一時停止する必要があるもの/理由を詳しく説明するために、アプリケーションのより詳細な説明があります。基本的には定期的に「仕事」をするアプリが欲しいです。したがって、以下の回答の1つに基づいて、次のようなことをした場合:

次に、サービス/コンソール アプリが起動し、終日タイマーを設定する無限ループに入ります。以前は、次の場所で他のコードの実行を実際に停止していました。

少なくとも機能しましたが、前述のように、スレッドを一時停止するためのリソースを集中的に使用する方法になる可能性があります。基本的に、私が本当に必要としているのは、タイマーが切れるまでスレッドをブロックする方法です。

EDIT2:これは、待機ハンドルを使用して機能するように見える私の最終的な実装です...

0 投票する
2 に答える
2687 参照

c# - System.Timers.Timer が Elapsed イベントを発生させるときに複数のスレッドを作成するのはなぜですか?

などを作成するSystem.Timers.Timerと...

間隔を 1000 に設定した結果:

間隔を 2000 に設定した結果:

Elapsedイベントが発生しているときに、イベントが異なるスレッドを表示していることがわかります。値を(1000ではなく)2000などのより高い値に変更するIntervalと、同じスレッドにとどまるように見えます。

何故ですか?

独自のスレッドで起動するが、複数のスレッドではなく 1 つのスレッドで起動するタイマーが必要です。

0 投票する
0 に答える
157 参照

c# - 間隔が異なる複数のタイマー、同じターゲットへの書き込み

私は、さまざまなデータ ソースからさまざまなデータ インポート ロジックを実行し、最終的に単一のターゲットである MS CRM インスタンスに書き込む Windows サービスを作成しています。現時点で唯一問題があると思うのは、CRM への書き込み部分です。異なる(場合によっては同じ)データソースからのデータの同時読み取りは、実際には問題になるべきではありません(これについては間違っているかもしれません...)そこで、同時書き込み(作成または更新)がないことを確認する方法を思いつきました) CRM に。

現時点での一般的な設計は次のとおりです。

サービスの開始時に何が起こるか:

タイマーの間隔が切れるとどうなるか:

そしてExecute、オブジェクトを拡張するすべてのメソッド内BaseSyncStrategyで、対象の CRM インスタンスで何かを更新または作成するたびに、次のようにします。

そして、CRMへの同時書き込みが発生しないようにするための簡単なコード(と思います):

これはサウンドデザインですか、それとももっと良い方法がありますか?

0 投票する
2 に答える
4296 参照

c# - Timer.Elapsed イベントに相当する UWP

数分ごとに自動的にイベントを発生させる必要があります。以下のように、Windows フォーム アプリケーションで Timers.Elapsed イベントを使用してこれを実行できることを知っています。

私は多くのことをグーグルで検索し、UWP でこれに相当するものを見つけるのに苦労しました。

0 投票する
1 に答える
1414 参照

c# - C# Timer.Elapsed イベントが 2 回連続して発生する

システムの「セルフチェック」アプリケーションの一部として、60 秒ごとに DLL の静的メソッドを呼び出すアプリケーションがあります。メソッドを手動で実行すると、すべて 10 秒以内に完了します。私の問題は、timer.elapsed イベントが 2 回、次々と発生していることです。それに加えて、タイマーが経過するたびに、イベントがもう一度発生します。(たとえば、最初は2回、2回目は3回、3回目は4回など)経過イベントの開始時にtimer.AutoReset = falseを設定し、timer.Enabled = falseを設定してからtrueに設定しようとしましたイベントの終わりに。イベントの間隔をリセットしてみました。私が見つけたすべての投稿は、上記のアクションでこの問題が解決されたはずであることを示しています。足りないものを見つけるのを手伝ってくれる人はいますか?

0 投票する
0 に答える
312 参照

c# - System.Timers タイマーはいつ破棄されますか?

タイトルで述べたように、System.TimersTimer はいつ破棄されますか?

コンソール アプリケーションを実行し、単純に次のコードを使用するシナリオでは

タイマーはある時点で破棄されますか、それとも永遠に「生きている」のですか? 注: 「永久に」とは、アプリケーションが閉じられるまでという意味です。