問題タブ [dispatchertimer]
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# - DispatcherTimer オブジェクトの破棄または強制終了と DispatcherTimer オブジェクトへのアクセス
質問 1: こんにちは、DispatcherTimerのオブジェクトを破棄または強制終了して、同じ名前の新しいオブジェクトを作成する方法はありますか?
質問 2: Public に設定されている場合、他のクラスのDispatcherTimerオブジェクトにアクセスできますか?
wpf - ViewModels が同一の位置プロパティを持っている場合、WPF MVVM Canvas UIElement は奇妙なバインディングを持っています
UIElement
ビューモデルがコレクション内の別のビュー モデルと同じプロパティを持っている場合、そのビュー モデルは間違ったものにバインドされます。
マトリックスをCanvas
表すコントロールがあり、このキャンバスは四角形のビュー モデルのコレクションにバインドされています。各四角形のビュー モデルは、モデルの座標を設定する Move() メソッドを持つモデルに関連しています。このメソッドは、マトリックス (x,y) 上のどこに移動するかを四角形に伝えます。
Canvas View Model には DispatcherTimer があり、実行時にキャンバスの ObservableCollection 内のすべての四角形ビュー モデルをループし、MoveModel() メソッドを呼び出します。このメソッドは、参照する四角形モデルの Move メソッドを呼び出します。
これは正常に機能し、キャンバス上のすべての長方形がマトリックス上の隣接するタイルに毎秒移動します。つまり、四角形が別の四角形 (同じ XPos、YPos プロパティを持つビュー モデル) によって既に占有されているタイルに移動するまでです。これが発生すると、両方の四角形が同じビュー モデルにバインドされ (そのように見えます)、タイマーが両方の四角形を実行します。同じ場所に移動します。したがって、キャンバス上で 5 つの長方形から始めた場合、最終的にはすべてが結合され、1 つの長方形だけがキャンバス上を移動するようになります。
問題をデバッグすると、四角形が正しく動き回ります。四角形が別の四角形タイルに入った場合、次回の反復では、四角形は単純にタイルの外に移動し、正しく続行されます。
どんな助けでも大歓迎です。
silverlight - WP7 Silverlight でのタイマー間隔の短縮
DispatcherTimer
メニューに簡単な翻訳アニメーションを適用するために WP7 Silverlight を使用しています。
ここで、ステップの長さを減らすと、移動はスムーズに見えますが、遅くなります。ステップの長さを大きくすると、移動は速く見えますが、滑らかではありません。
解決策は、ステップの長さを小さく保ち、間隔を短くすることです。しかし問題は、エミュレータが 10 ミリ秒以下の間隔で同じ数のステップを作成することです。
と同じ:
では、非常に短い時間ごとに何かを繰り返し発生させる方法/代替手段/解決策はありますか?
c# - ビデオを一時停止して、WPF と C# で別の位置から再生する方法
テスト コードの特定の場所でビデオを一時停止しようとしていますが、まったく別の位置から開始しようとしています。最終的には別のポイントから開始しましたが、再び一時停止すると、登録した最初のインスタンスに戻ります。このコードで何が間違っているのか知りたいです。
CSファイルのコードは
XAMLコードは
.net - Global.asax のタイマー
アプリケーションが IIS で開始されたときにタイマーを開始したいと考えています。
Global.asax の Application_Start に最適な場所があると思いますか?
どうもありがとうございました。
c# - DispatcherTimerがランダムな時間の後に起動を停止するのはなぜですか?
DispatchTimerを毎秒起動するように正しく設定しました-
問題:そして、それは一定期間正しく発火し、その後は発火を停止します。
追加情報: 今、あなたはそれが何をするのか尋ねるかもしれませんか?OneSecondChecker_Tick()メソッドが実行されている場合はtrueに設定され、実行されていない場合はfalseに設定されるクラスレベル(静的)ブール変数があるため、このメソッドの2つのインスタンスが実行されていません。毎秒発砲するように設定されていても同時に。OneSecondChecker_Tick()が遅延なく実行されることを確認することはアプリケーションの要件です。また、無限ループで実行しようとはしていません。OneSecondChecker_Tick()が実行される前に、テーブル値が更新されているかどうかを確認する2番目のチェックがあります。「一種の」がOneSecondChecker_Tick()に実行を通知するのはそのテーブル値です。そのテーブル値は、別のアプリケーションによって更新されます。
メソッド自体の中で、TPLを使用してスレッドを並行して実行するための呼び出しがあります。それが何か関係があるのかどうかはわかりません。
編集 私はまだこれを理解することができませんでした。アプリケーションがフリーズしている可能性があります。しかし、タスクマネージャーはそうは言いません。アプリケーションがタスクマネージャー以外の場所から応答していないかどうかを確認することはできますか?
c# - WPFでのGUIのタイミング更新
Rectangles
xミリ秒ごとに異なる色(多次元配列に格納されている)を表示したいWPFキャンバスがあります。
これは機能しますが、MainWindowコンストラクターにあるため、リアルタイムで更新されません。
明らかに、長方形はGUIスレッドで作成する必要がTimer
ありますが、色を変更するためにを作成すると、別のスレッドになります。
値の多次元配列を作成し、その値をRectangle配列の色にバインドして、別のスレッドからそれらにアクセスできるようにすることはできますか?それを行う場合、GUIスレッドに再描画するように指示するにはどうすればよいですか?
コンストラクターでこれが発生しないように、ユーザーが最初にクリックするボタンを使用する方が簡単かもしれません。
EDIT:
うまくいきましたDispatcherTimer
。MSがこれのために別のクラスを持っている理由は私を超えています。
これが私がそれを使用したソースです。
c# - WPFでDispatcherTimerイベントをスムーズにする方法は?
私のWPFアプリケーションでは、ユーザーがボタンを押して3Dモデルのスムーズな回転を開始し、ボタンを離して回転を停止します。
これを行うには、DispatcherTimerを作成します。
そして、ボタンが押されたtimer.Start()
ときに電話をかけ、ボタンを離したときに電話をかけますtimer.Stop()
。
このtimer_Tick
関数は、モデルの回転を変更します。
私が気付いたのは、モデルはほとんどの部分でスムーズに回転しますが、多くの場合、フリーズして途切れ、さまざまな時間、場合によっては最大1/4秒の間一時停止します。
これをスムーズにする方法はありますか?DispatcherTimerを使用することで(たとえば、System.Timers.Timerとは対照的に)、コールバックがUIスレッドで発生することを理解しています。しかし、ラインを実行するには、UIの脅威にさらされている必要があります
他のスレッドでタイマーコールバックを取得するさまざまな方法について読んだことがあります。しかし、最終的には、その行を呼び出すためにUIスレッドと同期する必要があるようです。Invoke()を使用して、たとえばSystem.Timers.TimerコールバックスレッドからUIスレッドにマーシャリングする場合、全体的にスムーズなアニメーションが得られますか?DispatcherTimerと同じようにUIスレッドと同期する必要があるため、そうすべきではないようです。そして、そのことについては、一定の間隔で設定するためのスキームは、UIスレッドに関して同じボートにあるようですよね?model2.Transform
(おそらく二次的な質問として、私は最初に一時停止の原因を理解しようとしています。私が知る限り、UIスレッドが行っていることは他に重要なことは何もありません。したがって、それらの間に何が起こっているのかわかりません。一時停止します。ガベージコレクション?収集するガベージはそれほど多くないようです。また、一時停止がそれほど極端ではないようです。)
c# - 複数の独立したディスパッチャータイマー?
いくつかのタイマーを作成し、x 時間をカウントダウンし、独立して作業し、textBlock で時間を更新し、終了したら何かを実行したいと考えています。
だから私は書いた:
時間は、たとえば 15 秒です。but1をクリックすると時間がカウントダウンされ、t1が10秒のときにbut2をクリックすると、t2も10秒になり、カウントダウンも同じ時間になります。
なぜそれが起こるのですか?それを避ける方法は?
c# - ディスパッチャー タイマー - Windows Phone
Windows Phone で小さなアプリを作成していますが、ディスパッチャー タイマーに問題があります。
ページが読み込まれるたびに、ディスパッチャが別の時間に実行されます。
基本的に、ユーザーがメインページ (カウントダウン) に戻るたびに、ディスパッチャー タイマーが再び実行されます。つまり、カウントダウンが 2 倍の速さで進んでいます。