問題タブ [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 に答える
695 参照

c# - タイマーがコードを実行していないc#Windowsサービス

Windowsサービスの開始時に実行されない次のコードがあります

ここで解決策を見つけましたが、うまくいきませんでした。

プログラム内:

「ServiceBase[]...」で始まる部分にコメントを付け、Programm クラスの「Processing ...」のコメントを外すと、正常に動作します。

しかし、私のコードが Windows サービスとして実行されると、何も起こりません

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

c# - 連動使用について

この点について多くの回答を読みましたが、まだ解決策が見つかりませんでした。

キャッシュされた値に問題があるカウンター属性を持つクラスがあります。volatile でも動作しないようです:

出力が次のように、onTimer が _threadsCounter 変数をキャッシュしているようです。

なぜ16に到着するのですか?コードを少し変更して問題を解決しました。

しかし、なぜこの動作ですか?

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

c# - UDP 受信の待機中にタイマー バッファ オーバーフローは発生しますか?

UDP パケットからデータを受信し、それをファイルに書き込むソフトウェアを作成しています。これは、UdpClient クラスをテストするためにコンソール アプリケーションとして作成したサンプル コードです。

UDP パケットが受信されない場合、while ループが Receive(ref groupEP) 関数で一時停止することがわかりました。UDP パケットが受信された場合にのみ、「Received」の出力に進みます。

ただし、実際のプログラム (WPF) では、リソースを節約するために、代わりにタイマーを使用しています。現在、インターフェイスとファイルを更新するために正常に動作していますが、タイマーが 100 ミリ秒ごとに呼び出され、UDP パケットが 1 秒ごとにしか受信されない場合にどうなるか疑問に思っていました (UDP をいつ受信するか分からないと仮定します)。だから私は100ミリ秒を選択します)。これにより、1 秒ごとに 9 回の冗長なタイマー呼び出しが発生し、オーバーフローが発生することはありませんか? 現在、アプリケーションはこのシーンで正常に動作していますが、その理由と、考えられる結果があるかどうかを理解したいと思います。

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

function - ISE および PowerShell コンソールの msgbox 関数と矛盾する結果

タイマー オブジェクトとメッセージ ボックスをいじっていて、レンガの壁にぶつかりました。

再利用可能な関数を使用してタイマー オブジェクトとポップアップを管理しようとしています。

私はこれらの機能のほとんどを単独で、そして小さな部分で最初にテストしました。すべてが機能したので、すべてをつなぎ合わせることにしました。

一緒に、それはうまくいかないようだったので、機能を基本に分解しました:

経過アクション中に「ハング」し続けるため、スクリプトを実行できません ( $Thirtyaction)。PowerShell コンソールに最後に表示されるのは、actionaction2です。したがって、問題はボックス関数内にあると考えましたが、次のとおりです。

  • ISE でスクリプトを呼び出すと、期待どおりに実行されます
  • 最初に functionfile を実行してからファイルを実行すると、(first/YesNo) msg​​Box で再び停止/ハングします。
  • コンソールに msgBox 関数を手動で入力してからファイルを開始すると、msgBoxes が表示されますが、elseステートメント内のコードが正しく実行されません ((2 回目/OK のみ)msgBox が表示された後に停止します)。

これが理にかなっている方法は考えられず、デバッグ/スイッチアップ/ダムダウンなどに多くの時間を費やしました.

edit1: 新鮮な日ともう少し情報。

関数を windows.Forms に変更しましたが、うまくいきませんでした。次に、すべての関数とスクリプトの一部のスレッド ID を出力し、ほら:

Timerevent$actionが発生したときにトリガーされる は、新しい PowerShell 実行空間で実行されるため、以前に定義された変数や関数にアクセスできなくなります。

これを修正する方法や回避する方法はわかりませんが、少なくとも何が問題なのかはわかっています。どんなアイデアでも大歓迎です。すでに答えてくれて、正しい方向へのヒントをくれた ppl に感謝します!

解決策と回避策を含むEdit2

$Thirtyactionスクリプトブロック内からタイマー属性を制御する方法の質問に対する回答が見つかった場合は、別のユーザーに感謝します。

リンク

スクリプトブロックで関数ファイルをドットソーシングするだけで、MsgBox 関数を使用できます。

変数に対する私の回避策は、3 つの環境変数を使用することでした。これは賢明でもベストプラクティスでもないと確信していますが、私の特別なケースでは問題にならず、うまくいきます。

例として、ここに私の現在の$Thirtyactionスクリプトブロックがあります:

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

c# - System.Timers.Timer または System.Threading.Timer を使用せずに C# でタイマーを作成する方法

System.Timers.Timerorを使用せずに C# でタイマーを作成することは可能System.Threading.Timerですか?

Unity プロジェクト (C#) でタイマーを使用しており、WebGL プロジェクトをエクスポートしようとしています。また、Unity WebGL エクスポートでは、現時点ではスレッドがサポートされていません。

また、System.Timers.Timer > Elapsedイベントの使用は別のスレッドで実行されるようです。(?)

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

c# - Windows サービスで ElapsedEventHandler が起動されない

このチュートリアルに従って開発した非常に単純なウィンドウ サービスがあり ます。

ただし、チュートリアルとは異なり、ElapsedEventHandler が起動されていないことに気付きました。

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

c# - C# timer.Elapsed およびクリックによるメソッドの呼び出し

タイマーに問題があります。

これは私のコードです:

UploadState はこのように実装されています

System.Timers.Timer を使用しています。これは Start メソッドを 10 分間隔で呼び出す必要があります (ヘルパー クラス内に実装されています)。

また、このメソッドは、ユーザーが特定のボタンをクリックしたときにも呼び出されます。

そして私の悩み。

タイマーは Start メソッドを呼び出します => UploadHelper.UploadState = UploadState.UploadOn.

また、_lock でロックする必要があります。

しかし、ユーザーが UploadData() 中にクリックすると、 UploadState = UploadState.UploadOff が表示され、ロックされていません。

このコードの何が問題になっていますか?

タイマーがこのメソッドを呼び出すと、状態が異なるのはなぜですか?

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

c# - スレッドを毎分正しく実行する方法は?

この質問は 2 つの部分に分かれています。複数のサーバーから情報を取得し、この情報を DB に保存するコンソール アプリケーションがあります。これを同時に実行できるようにするために、スレッドを使用しました。この実行を毎分自動化しようとしています。

stackoverflow を検索すると、これが機能することがわかりました。

ただし、これは期待どおりに機能せず、1 回しか実行されません。たとえば、これに変更した場合:

または:

その後、動作します。私は何を間違っていますか?

この質問の後半:

上で示したようにこれが実際に機能すると、別のことが起こります。プロセスは継続的に実行され、474 スレッドの後にクラッシュし、システムのメモリが不足していると表示されます。

これにスレッドスリープを使用してみましたが、一度実行すると実行が停止します。

役立つ場合は、これを含めます。

どうすればこれを機能させることができますか?