問題タブ [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# - コンソールアプリケーションの信頼性の高いタイマー
.NETには3つのタイマータイプがあることを認識しています( .NET Frameworkクラスライブラリのタイマークラスの比較を参照)。メインスレッドがビジーの場合、他のタイプがドリフトする可能性があるため、スレッドタイマーを選択しました。これは信頼できるものである必要があります。
タイマーの制御でこのタイマーが機能する方法は別のスレッドに配置されるため、ビジーでないときに親スレッドで完了した作業の開始に合わせて常にチェックすることができます。
コンソールアプリケーションでのこのタイマーの問題は、タイマーが別のスレッドで動作している間、メインスレッドがアプリケーションを閉じるために何もしていないことです。
ループを追加しようとしましたwhile true
が、タイマーが切れるとメインスレッドがビジー状態になります。
linux - gettimeofday()の解像度はマイクロ秒であることが保証されていますか?
もともとWin32API用に作成されたゲームをLinuxに移植しています(Win32ポートのOS XポートをLinuxに移植しています)。
QueryPerformanceCounter
プロセスの開始以来、uSecondsを指定し て実装しました。
これは、周波数として定数1000000を与えることと相まって、私のマシンQueryPerformanceFrequency()
でうまく機能し、プログラムの起動以降に含まれる64ビット変数を与えてくれます。uSeconds
それで、これはポータブルですか?カーネルが特定の方法でコンパイルされた場合など、動作が異なることを知りたくありません。ただし、Linux以外には移植できないので問題ありません。
sql - タイマーベースのイベント トリガー
私は現在、特定の要件を持つプロジェクトに取り組んでいます。これらの概要は次のとおりです。
- データは外部 Web サービスから取得されます
- データは SQL 2005 に格納されます
- データは Web GUI を介して操作されます
- Web サービスと通信する Windows サービスは、データベース経由を除いて、内部 Web UI と結合していません。
- Web サービスとの通信は、時間ベースである必要があり、Web UI でのユーザーの介入によってトリガーされる必要があります。
Web サービス通信トリガーの現在の (本番前の) モデルは、手動の介入から生成されたトリガー要求を格納するデータベース テーブルを介して行われます。複数のトリガー メカニズムは必要ありませんが、呼び出しの時間に基づいてデータベース テーブルにトリガーを入力できるようにしたいと考えています。私が見ているように、これを達成するには2つの方法があります。
1) トリガー テーブルを調整して、2 つの追加パラメーターを格納します。1つは「これは時間ベースですか、それとも手動で追加されますか?」タイミングの詳細を格納するための null 許容フィールド (正確な形式は未定)。手動で作成されたトリガーの場合は、トリガーが起動されたときに処理済みとしてマークしますが、時限トリガーの場合はマークしません。
または
2) 時間間隔でオンザフライでトリガーを作成する 2 番目の Windows サービスを作成します。
2 番目のオプションは私にはごまかしのように思えますが、オプション 1 の管理は簡単にプログラミングの悪夢に変わる可能性があります (テーブルの最後のポーリングが発生する必要のあるイベントを返したかどうかをどのように確認し、それをどのように停止するか)次のポーリングで再トリガー)
どちらのルート (これら 2 つのうちの 1 つ、または場合によってはリストにない 3 つ目のルート) を選択するかを決定するために、誰かが数分の時間を割いてくれれば幸いです。
sharepoint - Sharepoint:タイマージョブからのstsadmの実行+ SHAREPOINT \ System rights
ローカル管理者のWindows権限とSharePoint権限の両方を取得するためにSharePointタイマージョブが必要になるという異常な状況がありSHAREPOINT\System
ます。
ローカル管理者のメンバーであるアカウントを使用するようにタイマーサービスを構成するだけで、Windowsの特権を取得できます。これは、SharePointタイマーサービスに想定よりも多くの権限を与えるため、適切なソリューションではないことを理解しています。ただし、少なくともSharePointタイマージョブを実行できますstsadm
。
SHAREPOINT\System
ローカル管理者の下でタイマーサービスを実行する際のもう1つの問題は、このユーザーが、このSharePointジョブにも必要なSharePoint特権を必ずしも持っていないことです。この場合は機能しないことがわかりましたSPSecurity.RunWithElevatedPrivileges
。リフレクターはRunWithElevatedPrivileges
、現在のプロセスが(SharePointジョブを実行するサービスプロセス)であり、昇格を実行しないかどうかをチェックすることを示していますowstimer
(ここでの合理的な理由は、タイマーサービスがSharePointNT AUTHORITY\NetworkService
を持つWindowsアカウントで実行されることになっていることですSHAREPOINT\System
特権、したがって、タイマージョブの特権を上げる必要はありません)。
ここで考えられる唯一の解決策は、通常のNetworkService Windowsアカウントでタイマーサービスを実行し、管理者の資格情報をどこかに保存して、StarInfoのユーザー名を介してSystem.Diagnostics.Process.Run()に渡すことにより、ローカル管理者としてstsadmを実行することです。 、ドメインとパスワード。
今はすべてうまくいくようですが、今私が立ち往生している別の問題があります。Stsamdは次のエラーポップアップ(!)で失敗します(Winternals filemonは、この場合、stsadmが管理者の下で実行されていることを示しています):
The application failed to initialize properly (0x0c0000142).
Click OK to terminate the application.
イベントビューアは、ポップアップ以外は何も登録しません。
ローカル管理者ユーザーが私のアカウントであり、stsadm
このアカウントでインタラクティブに実行するだけで、すべて問題ありません。このアカウントで実行するようにタイマーサービスを構成すると、正常に機能します。
任意の提案をいただければ幸いです:)
.net - C#のタイマーから正確なティックを取得する
元々C++でMFCを使用して作成されていた古いメトロノームアプリケーションを、C#を使用して.NETで作成するように再構築しようとしています。私が直面している問題の1つは、タイマーを十分に正確に「チェック」することです。
たとえば、120の簡単なBPM(1分あたりのビート数)を想定すると、タイマーは0.5秒(または500ミリ秒)ごとにチェックする必要があります。ただし、これをティックの基礎として使用することは完全に正確ではありません。.NETは、経過時間が経過する前にタイマーがティックしないことを保証するだけだからです。
現在、上記で使用したのと同じ120 BPMの例でこれを回避するために、ティックを100ミリ秒のようなものに設定し、5番目のタイマーティックごとにクリック音のみを再生しています。これは精度をかなり向上させますが、ちょっとしたハックのように感じる場合。
それで、正確なダニを取得するための最良の方法は何ですか?Visual Studioですぐに利用できるWindowsフォームタイマーよりも多くのタイマーが利用できることは知っていますが、私はそれらにあまり詳しくありません。
c# - タイマーベースのアプリケーションの単体テスト?
私は現在、k秒ごとにn回アクションを実行する、シンプルなタイマーベースのミニアプリをC#で作成しています。
私はテスト駆動開発スタイルを採用しようとしているので、私の目標はアプリのすべての部分を単体テストすることです。
だから、私の質問は:タイマーベースのクラスをユニットテストする良い方法はありますか?
問題は、私が見ているように、テストの実行に不快な時間がかかるという大きなリスクがあることです。これは、テストが目的のアクションが発生するまで非常に長く待たなければならないためです。
特に、フレームワークで許可されている最小の時間分解能(1ミリ秒?)を使用する代わりに、現実的なデータ(秒)が必要な場合。
アクションにモックオブジェクトを使用して、アクションが呼び出された回数を登録しているので、アクションは実質的に時間がかかりません。
c# - DateTime.Now は関数のパフォーマンスを測定する最良の方法ですか?
ボトルネックを見つけて、時間をできるだけ正確に測定する必要があります。
次のコード スニペットは、パフォーマンスを測定するための最良の方法ですか?
c# - System.Threading.Timer はどの程度スケーラブルですか?
私は s を利用する必要があるアプリを書いていますがTimer
、非常に多くの s を利用する可能性があります。System.Threading.Timer
クラスはどの程度スケーラブルですか? ドキュメントには「軽量」とだけ書かれていますが、それ以上の説明はありません。これらのタイマーは、 に代わってすべてのコールバックを処理する単一のスレッド (または非常に小さなスレッドプール) に吸い込まれますか?それとも、Timer
それぞれTimer
に独自のスレッドがありますか?
質問を言い換える別の方法は次のとおりだと思います:どのようにSystem.Threading.Timer
実装されていますか?
java - リセット可能な Java タイマー
java.utils.Timer で時間をリセットできるようにしたいのですが、X 秒後に 1 回限りのイベントが発生するように設定する必要があります。タイマーが作成されてから X 秒の間に何も起こらない場合、イベントは通常どおり発生します。
ただし、X 秒が経過する前に、代わりに Y 秒後にイベントが発生することを決定した場合は、イベントが Y 秒後に発生するように、タイマーに時間をリセットするように指示できるようにしたいと考えています。たとえば、タイマーは次のようなことができる必要があります。
utils タイマーを使用してこれを行う方法がわかりません。cancel() を呼び出した場合、再度スケジュールすることはできません。
この動作を再現する唯一の方法は、javax.swing.Timer を使用することであり、元のタイマーを停止して新しいタイマーを作成する必要があります。すなわち:
もっと簡単な方法はありますか??
c++ - ロールオーバー セーフ タイマー (ティック) の比較
タイミングを考慮して観察できるハードウェアのカウンターがあります。ミリ秒をカウントし、16 ビットの符号なし値で格納されます。タイマー値が特定の時間を経過したかどうかを安全に確認し、避けられないロールオーバーを安全に処理するにはどうすればよいですか。
ms_timer が 0 にオーバーフローすると、このコードは失敗します。