問題タブ [dispatcher]
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.
wpf - dispatcher.Invoke を使用するとスレッドが安全になりますか?
私のWPFアプリでは、進行状況バーを更新する進行状況イベントを発生させる長時間のアップロードを実行しています。ユーザーはアップロードをキャンセルする可能性もあり、失敗する可能性もあります。これらはすべて非同期イベントであるため、UI を更新するには Dispatcher.Invoke を使用して実行する必要があります。
したがって、コードは次のようになります。
破棄されたビューで view.Progress を設定するとエラーがスローされると仮定すると、このコードはスレッドセーフですか? つまり、進行状況の更新中にユーザーがキャンセルをクリックすると、進行状況が更新されるまで待機する必要があり、OnCancelButtonClicked の実行中に進行状況が更新されると、Dispatcher.Invoke 呼び出しによって view.Progress が更新されます。 _cancelled が設定された後までキューに入れられるので、そこで問題は発生しません。
それとも、安全のためにロックが必要ですか?
.net - どのディスパッチャを使用しますか?ウィンドウまたはコントロール?
これまで、UI以外のスレッドからUIコントロールを更新したい場合は、次のような構文を使用していました。
今、私はそれについてもう少し読んでいます私は次の構文を見つけ続けています:
後者の方がいいですか?なぜ私は他の方法よりも1つの方法を選んだのですか?
zend-framework - ディスパッチャの例外の後にリダイレクトするにはどうすればよいですか?
ブートストラップファイル内のzendフレームワークには、次のコードがあります。
代わりに、カスタムコントローラーにリダイレクトしたい醜いメッセージ... $ frontControllerを使用してリダイレクトできない場合、どうすればそれを行うことができますか...?
ご協力いただきありがとうございます..
c# - SQL DataContext の Dispatcher に似たものを作成する
私の現在のプロジェクトは、SQL Server バックエンドを持つ WPF アプリケーションです。
WPF では、UI は UI スレッドによってのみ変更できます。別のスレッドで UI の変更を行う必要がある場合は、ディスパッチャ オブジェクトを呼び出してアクションを指定できます。事実上、これはデリゲートを WM_ メッセージにマッピングしています。
SQL Serverへのlinqデータコンテキストもシングルスレッドであるため、この「ディスパッチャ」のアイデアをWPFからコピーして、パブリックデータコンテキストへのリクエストを常に「パブリックSQLスレッド」からマーシャリングするために使用できる同様のオブジェクトを作成するにはどうすればよいですか?
起動時にデータ コンテキストを初期化し、SqlThread.Invoke() メソッドによって起動されるまでスリープするスレッドを作成する必要があると思います。
このアイデアに似たもの、またはこれを行うのに役立つ資料を知っている人はいますか?
java - サーブレット「newspring」は利用できません
新しいSpringプロジェクトをセットアップしようとすると、コントローラーにルーティングされると予想されるページに移動すると、このエラー(HTTPステータス404 - サーブレットnewspringが利用できません)が発生するという問題が発生します。
web.xml
そこで、Tomcat のログを調べたところ、次の例外が表示されました。
SEVERE: WebappClassLoader デリゲートの読み込みエラー: false
リポジトリ: /WEB-INF/classes/ ----------> 親クラスローダー: org.apache.catalina.loader.StandardClassLoader@a1807c org.springframework.web.servlet. DispatcherServlet java.lang.ClassNotFoundException: org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1387) の org.springframework.web.servlet.DispatcherServlet java:1233) org.apache.catalina.core.StandardWrapper.loadServlet(StandardWrapper.java:1095) org.apache.catalina.core.StandardWrapper.load(StandardWrapper.java:993) org.apache.catalina.core .StandardContext.loadOnStartup(StandardContext.java:4149)
しかし、欠落していると思われるクラスは、実際には WEB-INF/libs (tomcatfolder/webapp/newSpring/WEB-INF/libs) に存在する spring-webmvc.jar に存在します。
ここが見えない?
wpf - Dispatcher.DisableProcessing がアクティブかどうかを検出するにはどうすればよいですか?
Dispatcher
が中断されている (Dispatcher.DisableProcessing()
呼び出された)場合にメッセージ ボックスを表示しようとすると、例外が発生します。
InvalidOperationException: 'Dispatcher の処理が中断されました' (こちらを参照)。
Dispatcher
が中断されているかどうかを検出する方法を知っている人はいますか(したがって、いつ呼び出すBeginInvoke()
かがわかります)。
編集1:
Application.DispatcherUnhandledException イベントに反応して、MessageBox を表示しようとしています。ただし、この未処理の Exception が DataBinding 中にスローされた場合 (つまりItemsControl.ItemsSource
)Dispatcher
は中断されます。MessageBox
thenを表示しようとすると失敗します。常に使用Dispatcher.BeginInvoke()
することで問題は解決しますが、本当に必要でない限り、そうしたくありません。
編集2:
リフレクションを使用してこれを実現するには、次のようにします。
wpf - Dispatcher CheckAccessの目的は何ですか?
完了イベントの非同期Webサービスには、次のようなコードがあります。
このコードを削除するとどうなるか誰か知っていますか?または、私の質問に答えることができますか?
c# - Dispatcher.Invoke を使用して非メイン スレッドから WPF コントロールを変更する
私は最近 WPF でプログラミングを開始し、次の問題に遭遇しました。Dispatcher.Invoke()
メソッドの使い方がわかりません。私はスレッド化の経験があり、単純な Windows フォーム プログラムをいくつか作成しました。
はい、私はそれがかなり不自由であることを知っていますが、これらは単純な監視アプリケーションでした.
実際には、バックグラウンドでデータを取得する WPF アプリケーションを作成しています。新しいスレッドを開始して、(Web サーバーから) データを取得するための呼び出しを行い、WPF フォームに表示したいと考えています。問題は、このスレッドからコントロールを設定できないことです。ラベルでも何でもない。これはどのように解決できますか?
コメントへの回答:
@Jalfp:
データを取得するときに、「新しいトレッド」でこの Dispatcher メソッドを使用しますか? または、バックグラウンドワーカーにデータを取得させ、それをフィールドに入れ、このフィールドがいっぱいになるまで待機する新しいスレッドを開始し、ディスパッチャーを呼び出して取得したデータをコントロールに表示する必要がありますか?
c# - 別のウィンドウから入力を受け取るまで現在のスレッドを停止しますwpfC#
ユーザーがこのウィンドウに入力を提供するまで他のを停止したいThread
...私が持っているコードをそのように与える:
次のコードPing
がネットワークノードのスキャンを実行するとしますが、最初に範囲を取得するためのウィンドウが開きます。しかし、このウィンドウで入力が受信されるまでスキャンを停止する方法...
スレッドIDを取得してこれを行うことはできますか?
silverlight - Silverlight テストで Dispatcher にアクセスするには?
テストには SL 単体テスト フレームワークを使用しています ( http://code.msdn.microsoft.com/silverlightut )。私のコードはクライアントとサーバーの通信に大きく依存しており、いくつかの場所で GUI ディスパッチャーにアクセスして、重要なデータが単一のスレッド (つまり、GUI スレッド) でのみアクセスされるようにしています。
このディスパッチャーは単体テストでは利用できないようです - 私は Deployment.Current.Dispatcher を使用してみましたが、空白のコントロールのインスタンスを作成して独自のディスパッチャーを使用しようとしましたが、どちらも機能しません。Dispatcher.BeginInvoke() 内のコードは、後で Thread.Sleep を含めても実行されません。