問題タブ [doevents]

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 投票する
1 に答える
1004 参照

.net - Application.IdleでDoEventsを呼び出す

再入可能性の問題があり、UIを保持しないようにする別の方法が常にあるため、Application.DoEventsには近づきません。私は長い間、マルチスレッドの単純な代替手段として、Application.Idleイベントでバックグラウンド作業を行うことを好みました。ただし、長時間実行されるタスクの場合、DoEventsループを使用してApplication.Idleで操作を実行することは許容されますか?

ここでのロジックは、DoEventsを呼び出すApplication.Idleイベントでは、キューに入れられたメッセージがないため、コードを再入力できないようにする必要があるということです。各tidbitは、メッセージキュー(またはUI)を大幅に保持しないように十分に高速に処理されます。

それで、このアプローチに害や欠点はありますか?つまり、アイドルイベントでDoEventsを呼び出すのは安全ですか?C#5にこの種の状況に対処する機能があることは知っていますが、 C#5を使用していない人(現時点ではほとんどの人)にとって、そして一般的な好奇心から、これは良いことです予定?または、マルチスレッドに頼らずに、長時間実行される操作中にメッセージを処理するためのより簡単な代替手段はありますか?

これが魔法の弾丸だとは思わないでください。非同期アプローチと同じ落とし穴があることを私は知っています。私は、彼のアプリケーションを一貫した状態に保つことができなければならないことを認識しています。そして、私マルチスレッドソリューションがあることを知っています。私はそれらを避けています。なんで?マルチスレッドはもっと複雑だからです。それは非現実的だとは思いません。

0 投票する
3 に答える
595 参照

c# - DoEventsを呼び出すことをいつ知っていますか?

長時間の操作(ファイルの処理など)をループしていて、プログレスバーを更新したい場合は、理解できることから、DoEventsを使用する必要があります。

ただし、関数のすべてのループ中に呼び出すと、プログレスバーのアニメーションが非常に速く(または操作によっては遅く)再生されるだけです。これは、DoEventsを使用すると、プログレスバーが「呼吸」できるため、より適切な単語が不足しているため、プログレスバーとフォームの残りの部分が更新されるためです。

私の質問は、DoEventsを呼び出すことが適切であることをどのように知っていますか?明らかに、気まぐれでそれを呼び出すことはできません-しばしばあなたはそれのように感じます-これはとりわけ散発的なアニメーションをもたらします。では、フォーム/アプリケーションにDoEventsの呼び出しが必要かどうかを確認する簡単な方法はありますか?

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

vba - VBA のユーザーフォームで Repaint よりも DoEvents を使用する利点は何ですか?

VBA のユーザーフォームで Repaint よりも DoEvents を使用する利点は何ですか? 画面のちらつきなどの煩わしさを最小限に抑えるため、またはフォーム以外の更新が必要な場合は、パフォーマンスのためですか?

VBAの観点からの違いについての明確化を探しています。

0 投票する
4 に答える
49206 参照

vb6 - 「DoEvents」はvb6で何をしますか?

"DoEvents" は vb6 で何をしますか? 「スタック領域が不足しています」というエラー メッセージが表示されるのはなぜですか? どういう意味ですか ?

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

doevents - 無限ループのバックグラウンドワーカー

ただしdoevent()、この無限ループでフォーム内の別のコントロールを実行する別の方法があります。

バックグラウンドワーカーでやりたかったのですが失敗しました。

0 投票する
4 に答える
18357 参照

c# - Application.DoEvents() は WinForms 専用ですか?

Application.DoEvents()フォーム専用ですか?

このコマンドは、以前のすべてのコマンドが確実に処理されるようにするために使用されたと思いましたが、ドキュメントを読んだ後では、もうわかりません。

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

jquery - jQueryのタイミング-メソッドのDoEvents()に似たものを追加したい

約260行を含むデータのテーブルがあります。これらの各行は、parentHeaderNameなどの属性によって識別されます。そのテーブルのヘッダーがクリックされると、ヘッダーをajaxload.gifイメージに簡単に変更するjQueryが配置されます。

次に、を呼び出して260行すべてを切り替えます

残念ながら、ヘッダーをajaxload.gifに変更して正しく実行するコードの部分を取得できません。そのステートメントとtoggleステートメントの両方がすべて同時に実行されているかのようです。つまり、ユーザーにはajaxload.gifが表示されません。画像を表示する唯一の方法は、2つのステートメントの間にalert('...')メッセージを配置することです。明らかに、これは解決策としては望ましくありません。delay()とsetTimeoutを使用してみましたが無駄になりました。私が必要としているのは、トグルの実行前に画像を表示できるようにする、jQueryまたはjavascriptに相当するある種のDoEventsだと思います。

何か案は?

ありがとう、クリス

更新:フィードバックの皆さんに感謝します。実際のコードは次のとおりです。

(このコードは、実際にはヘッダーをajaxload.gifではなくexpand.gifまたはcollapse.gifに変更します。)

遅延の提案を試しました

しかし、それは何の助けにもなりませんでした。トグルする必要のある行数が少ない場合(たとえば、最大で約20行)は問題ありません。しかし、場合によっては、束(260など)を非表示にする必要があります。これは、ブラウザーがDOMをくぐり抜けて、すべての非表示を実行するのに数秒かかるかのようです。そのため、私はもともとajaxload.gif画像を使用したいと思っていました。

ありがとう、クリス

0 投票する
10 に答える
196138 参照

c# - Application.DoEvents() の使用

Application.DoEvents()C#で使える?

この機能は、VB6 とほぼ同じように、GUI がアプリの残りの部分に追いつくことを可能にする方法DoEventsですか?

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

.net - .netはApplication.DoEventsでハングします

従来の製品の1つはWinformsアプリケーションであり、バックグラウンドスレッドを使用する代わりに、メインUIスレッドですべてを実行します。このメインスレッドで実行されている一定のループがあり、20ミリ秒ごとにApplication.DoEvents()を呼び出します。たまに、アプリケーションはDoEvents呼び出しでハングします。私の質問は、どのキューに入れられたイベント呼び出しでコードがハングしているのかをどのように見つけるのですか?

PSプロセス内のすべてのスレッドのスタックトレースを取得するために使用できるツールを誰かが知っていますか?

また、これは本番クライアントでのみ発生しており、今すぐ修正する必要があります。クライアントにVSをインストールする可能性もありません。

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

vb.net - DoEventsは現在のスレッドにのみ影響しますか?

独自のスレッドで実行される単純な「作業中」フォームがあり、長時間実行されている操作中にアプリケーションが停止していないことをユーザーに通知します。作業フォームを更新するには、DoEvents()呼び出しを挿入する必要がありました。

私は興味があります、これは私がいる現在のスレッドのメッセージだけをポンピングしますか、それともアプリケーション全体に対してそれを行いますか?操作が終了するまでメインウィンドウが応答しないようにしたいので、動作に興味があります。以下は、作業フォームのコードです。

明確にするために、私は自分が持っているコードで問題ありませんが、DoEvents()スレッドでどのように動作するかを知りたいです。