問題タブ [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.
java - Androidの時限ポップアップ
Android用のマッチングゲームを作成していますが、ユーザーがマッチすると、「マッチ!」というダイアログボックスが表示されます。しかし、これを行う方法がわかりません。Thread.currentthread()。sleepを使用すると、ダイアログが表示されません。
何も起こりません-プログラムはほんの一瞬ハングします。たった1秒間ポップアップしたいのですが、別の種類のポップアップタイプのものがあればそれもいいでしょう。
multithreading - 複数の相互作用するタイマーの設計
コンポーネント階層のすべてのレベルでタイマーを必要とするシステムを設計しています。複数のタイマーが同時にアクティブになる場合がありますが、相互に作用する必要があります(コンポーネントのタイマーを停止すると、子孫のタイマーが停止し、コンポーネントのタイマーを開始すると、祖先のタイマーが開始し、兄弟のタイマーが停止します)。
タイマーにはそれぞれ異なる制限があり、ティック、開始、停止、および期限切れのイベントをリスナーに送信します。
これはまだ設計段階の初期段階です(実装言語はまだ決定されていません)が、スレッドの混乱を避けたいと思います。何かアドバイス?
c - Cでの最適なタイミング方法?
高解像度と移植性を備えたコード セクションのタイミングを計る最良の方法は何ですか?
クロスプラットフォーム ソリューションを持つ標準ライブラリはありますか?
python - x秒ごとに関数を繰り返し実行する最良の方法は何ですか?
Pythonで関数を60秒ごとに永久に繰り返し実行したい(Objective CのNSTimerやJSのsetTimeoutのように)。このコードはデーモンとして実行され、cronを使用して毎分Pythonスクリプトを呼び出すのと実質的に似ていますが、ユーザーが設定する必要はありません。
Pythonに実装されたcronに関するこの質問では、ソリューションは事実上x秒間sleep()を実行しているように見えます。私はそのような高度な機能を必要としないので、おそらくこのようなものが機能するでしょう
このコードに予測可能な問題はありますか?
c# - アプリケーションで System.Timers.Timer を使用する場合、System.Timers.Timer を破棄する必要がありますか?
アプリケーションのクラスの 1 つで System.Timers.Timer クラスを使用しています。Timer クラスには、IDisposable インターフェイスを実装する親 Component クラスから継承された Dispose メソッドがあることを知っています。以下のクラスのインスタンスは、アプリケーションのライフサイクル中に何度も作成されます。それらのそれぞれには、クラスのライフサイクル中に継続的に Elapsed イベントを生成する Timer クラスのインスタンスがあります。Timer クラスを使用してタイマー オブジェクトを破棄するクラスに IDisposable インターフェイスを実装する必要がありますか? (これをまったく行わないコードを見たことがあります)。次のように以下のクラスを使用すると、一部のアンマネージ リソースが解放されないのではないかと心配しています。
クラス:
.net - System.Windows.Forms.Timer のパフォーマンス
System.Windows.Forms.Timer に基づいて頻繁に更新される多くのユーザー コントロールを含むアプリケーションがあります。各コントロールのパフォーマンスにタイマー インスタンスを追加しても安全ですか? または、すべてのインスタンスで使用される常に実行されるシングルトン タイマーを 1 つ持つ必要がありますか? ボンネットの下で実際に何が起こっているのですか?タイマーごとに (カウント用の) 追加のスレッドはありますか?
c++ - CreateTimerQueueTimer コールバックと競合状態
アプリケーションでタイマー キューを使用しており、独自の C++ タイマー オブジェクトの 1 つへのポインターをコールバックへの「パラメーター」として渡します (CreateTimerQueueTimer で)。次に、コールバックでオブジェクトの仮想メソッドを呼び出します。
Timer オブジェクトのデストラクタは、DeleteTimerQueueTimer() を使用してタイマーを確実にキャンセルします。
ただし、コールバックが既に呼び出されていても、 TimedOut() の呼び出し前にタイマー オブジェクトが破棄された場合、コールバックが存在しないオブジェクトの仮想メソッドを呼び出すため、アプリがクラッシュするという微妙な競合状態があります。さらに悪いことに、削除中です。
マルチスレッド呼び出しを制御するためにミューテックスを配置していますが、それでも問題が発生します。
コールバック パラメータとしてオブジェクト ポインタを使用することは本当に良い考えですか? スレッド間の同期が保証されていないため、私には悪臭がします。
より良い解決策はありますか?他の人は何をしますか?
発生することの 1 つは、すべての単一の Timer インスタンスへのポインターのセットを保持することです (コンストラクターで追加し、デストラクターで削除します)。しかし、Timer がから派生している場合、基本クラスのデストラクタのセットからポインタを削除するだけなので、これは機能しないと思います。派生オブジェクトの破壊を開始した場合、損傷はすでに発生しています。
乾杯。
c# - C#では、タイマーの参照をどこに保持すればよいですか?
のドキュメントにSystem.Threading.Timer
は、ガベージ コレクションを回避するためにライブ参照を保持する必要があると記載されています。しかし、どこでそれを行うべきですか?私main
は非常に単純で、参照をどこに保持すればよいかわかりません。
アプリケーションの最後までフィールドが収集されないと仮定してstatic
、クラス内のフィールドに参照を保持することを考えました。しかし、これが最善の方法であるかどうかはわかりませんので、アドバイスをいただければ幸いです。Program
static
.net - WPF.NET毎分イベントをトリガーするための最良の方法
データベーステーブルを毎分チェックする必要があるアプリがあります。テーブルは時刻ごとにインデックスが付けられているため、アプリはこのチェックを1分ごとに実行する必要があります。
これを行うための最良の方法は何ですか?バックグラウンドワーカースレッドを作成することはできますが、各チェックの後に60秒間スリープするように設定すると、チェックを呼び出すオーバーヘッドのために、最終的に1分を逃します。
私がチェックしてからチェックした分を覚えていますか。15秒ごとに言って、分が変わった場合はチェックを実行しました。
または、他に使用すべきアプローチはありますか?
WPF、VS2008、VB.NETを使用しています
TIA、
サイモン
c# - スレッド使用中のメモリ リーク
このコードでメモリ リークが発生しているようです。これはコンソール アプリであり、いくつかのクラス (WorkerThread) を作成し、それぞれが指定された間隔でコンソールに書き込みます。これには Threading.Timer が使用されるため、コンソールへの書き込みは別のスレッドで実行されます (TimerCallback は ThreadPool から取得した別のスレッドで呼び出されます)。さらに複雑なことに、MainThread クラスは FileSystemWatcher の Changed イベントにフックします。test.xml ファイルが変更されると、WorkerThread クラスが再作成されます。
ファイルが保存されるたびに (WorkerThread、したがってタイマーが再作成されるたびに)、タスク マネージャーのメモリが増加します (メモリ使用量、場合によっては VM サイズも)。さらに、.Net Memory Profiler (v3.1) では、WorkerThread クラスの Undisposed Instances が 2 増加します (ただし、.Net Memory Profiler には検出に苦労するバグがあったことを読んだので、これは危険かもしれません)。破棄されたクラス。
とにかく、ここにコードがあります-誰かが何が悪いのか知っていますか?
編集: クラスの作成を FileSystemWatcher.Changed イベント ハンドラーから移動しました。つまり、WorkerThread クラスは常に同じスレッドで作成されます。静的変数にいくつかの保護を追加しました。また、何が起こっているかをより明確に示すためにスレッド情報を提供し、Timer の使用と明示的な Thread の使用を交換してきました。ただし、メモリはまだリークしています。メモリ使用量は常にゆっくりと増加し (これは単にコンソール ウィンドウの余分なテキストが原因ですか?)、ファイルを変更すると VM サイズが増加します。コードの最新バージョンは次のとおりです。
編集これは、主に、書き込み時にコンソールがメモリを使い果たすという問題のようです。明示的に記述されたスレッドがメモリ使用量を増加させるという問題はまだあります。以下の私の答えを見てください。