問題タブ [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.
c# - Application.Current.Shutdown()とApplication.Current.Dispatcher.BeginInvokeShutdown()
最初に少し背景を説明します。従来のWin32アプリケーションのGUIフロントエンドであるWPFアプリケーションがあります。レガシーアプリは、別のスレッドでDLLとして実行されます。ユーザーがUIで選択したコマンドは、その「レガシースレッド」で呼び出されます。
「レガシースレッド」が終了すると、GUIフロントエンドは何も役に立たなくなるため、WPFアプリケーションをシャットダウンする必要があります。したがって、スレッドのメソッドの最後で、を呼び出しますApplication.Current.Shutdown()
。
私はメインスレッドにいないので、このコマンドを呼び出す必要があります。ただし、ディスパッチャもディスパッチャBeginInvokeShutdown()
をシャットダウンする必要があることに気付きました。だから私の質問は:呼び出すことの違いは何ですか
と呼び出し
c# - WPFディスパッチャー{"別のスレッドがオブジェクトを所有しているため、呼び出し元のスレッドはこのオブジェクトにアクセスできません。"}
まず、私はWPFとC#に精通していると言う必要があります。アプリケーション:マンデルブロ画像の作成(GUI)この場合、ディスパッチャは完全に機能します。
以下のコードでこれを実行しようとすると、メッセージ(タイトル)が表示されます。
私のプログラムがどのように機能するかを説明しようと思います。ピクセルと色を計算するための新しいスレッドを作成しました(GUIが応答しないため)。このスレッド(メソッド)では、計算の準備ができた後、ディスパッチャーを使用してビューボックスの画像を更新しています。
計算を別のスレッドに入れない場合は、イメージを更新またはビルドできます。
c# - System.Windows.Controls.Image を作成すると例外がスローされます - ディスパッチャーを使用してインスタンス化するにはどうすればよいですか?
テストで次のことを行うコードで単体テストを実行しています。
Icon プロパティのゲッター内で、次のようにしています。
それはこの例外をスローしています: System.InvalidOperationException : 多くの UI コンポーネントがこれを必要とするため、呼び出し元のスレッドは STA でなければなりません。
私はそれが何を意味するかを理解し、Dispatcher を使用する必要があることを理解していますが、方法または理由について少し混乱しています...これは ViewModel のプロパティであり、実行時にこれらの例外は発生しませんアプリケーション。
その他の情報: これは、.NET 4 にアップグレードしたときにのみ失敗し始めました。
c# - Dispatcher.Invoke が UI 更新をトリガーしないのはなぜですか?
私は UserControl を再利用しようとしていますが、進行状況を追跡するロジックも借りています。物事を単純化しようとします。MyWindow.xaml には MyUserControl が含まれています。MyUserControl には独自の進行状況インジケーター (フォーマット中...、ファイルのコピー中... など) があり、この進行状況を MyWindow フォームのどこかにミラーリングしたいと思います。しかし、ユーザー コントロールには、よくわからないロジックがあります。何度も読みましたが、まだ Dispatcher を理解していません。進行状況を更新するユーザー コントロールのロジックの概要を次に示します。
私は賢いと思い、ActivateInProgress プロパティ セット ロジックで呼び出される MyUserControl にイベントを追加しました。
MyWindow コンストラクター内の ActivateInProgressHandler を、ウィンドウ自体の進行状況インジケーターに使用されるビュー モデル プロパティを設定する次のメソッドに設定しています。
ただし、ウィンドウの進行状況インジケーターは変化しません。だから、私は Dispatcher.Invoke が私が理解できないことをしていると確信しています。SetActivation メソッド内にメッセージ ボックスを配置すると、スレッドがブロックされ、ウィンドウの進行状況インジケーターが更新されます。基本的なスレッドは理解していますが、この Dispatcher 全体は初めてです。私は何が欠けていますか?
更新: 現在は機能しているようです。進行状況が非常に速く更新されたため、画面に表示されなかったことが判明しました。しかし、なぜ Dispatcher.Invoke が実行されたのかを理解したいと思います (これは私が書いていない既存のコードでした)。アクションの内容が *.xaml.cs コードの残りの部分と一致しないのはなぜですか?
wpf - Dispatcher and SynchronizationContext classes
Can somebody tell me when to use a Dispatcher
and when to use the SynchronizationContext
class?
For a while now I have been using the Dispatcher
to queue up tasks from a background thread, then I discovered the SynchronizationContext
.
wpf - Dispatcher.Invoke ブロックを永久に呼び出す
UIディスパッチャーでダイアログを呼び出そうとしています:
ただし、呼び出しはInvoke
永久にブロックShow
され、UI スレッドで呼び出されることはありません...
使用BeginInvoke
はオプションではありません: リモート オブジェクトからのイベントを処理しているため (.NET リモート処理を使用)、すぐに結果が必要です。
何か案が ?
アップデート
問題のより完全な説明は次のとおりです。
.NET Remoting を使用して Windows サービスと通信するクライアント アプリケーションがあります。ある時点で、クライアントは操作を実行するためにサービスを呼び出します (この呼び出しは、ユーザー アクション (この場合はボタンのクリック) によってトリガーされます)。サービスは、操作を実行するために資格情報を必要とする場合があります。その場合、CredentialsNeeded
クライアントによって処理されるイベントが発生します。次に、クライアントはダイアログを表示してユーザーに資格情報の入力を求め、イベントの引数に適切なプロパティを設定します。イベント ハンドラーが戻ると、サービスは資格情報を使用して操作を完了し、制御をクライアントに返します。
そのため、イベントを受信すると、UI スレッドはサービス側で操作が完了するのを待っています...呼び出しが処理されない理由だとInvoke
思いますが、どうすれば回避できますか? ダイアログを表示する別のUI スレッドを作成できますか? WinForms では、別のメッセージ ポンプを で開始できることApplication.Run
はわかっていますが、WPF で同じことを行う方法がわかりません...
ruby-on-rails - RailsアプリとMongrelの奇妙な問題
この問題に関する質問を最初に serverfault.com に投稿しました: https://serverfault.com/questions/152587/apache-mod-proxy-to-another-server
これはサーバーのセットアップの問題ではなく、Rails アプリケーションの問題であることに気付きました。このアプリケーションを、同じサーバー上で実行している別の機能する Rails アプリとまったく同じようにサーバーごとに設定しました。サーバーを起動すると、mongrel.log は次のようになります。
ページをロードすると、ログに次のように表示されます。
この問題の原因となるこのアプリの違いがわかりません。
zend-framework - Zendのリンク(hrefなど)の問題
アクションを呼び出すときに、ZendFrameworkに問題があります。
このアクションは、「UploadInterfaceController」と呼ばれるコントローラー内で「uploadvideo」と呼ばれます。そのため、ビューは「uploadvideo.phtml」と呼ばれます。
これで、これらすべてが「アップロード」と呼ばれるモジュールにラップされます。
問題は、uploadvideo.phtml内のリンクを呼び出せないことです。私は次のコードを試しました:
そしてそれは私に素敵なクリーンURL(webroot / public / upload / UploadInterface / videoupload)を生成します。
。
だが
ディスパッチャエラーが発生しましたが、説明できません。
ZFが「Upload_」プレフィックスを取得しているので、わかりません。コントローラ(および.zfproject.xmlのエントリを表す)の名前を変更しようとしましたが、同じままです。
silverlight - 処理中にSilverlightUIを更新する方法
オンラインで投稿されたいくつかの例を調べましたが、質問に答えることができません。
forループで1ずつ増加している'p'変数があります。UIに計算の進行状況を表示したい(「p」が0から1000000にどのように増加しているかを示すため)。別のスレッドで計算を行い、ディスパッチャーを呼び出してUIのResultBoxを更新します。例:
}
何らかの理由でこれは機能しません。ただし、this.Dispatcherの直前にThread.Sleep(1)を配置すると、意図したとおりに機能します。UIアップデート(ディスパッチャー)が頻繁に呼び出されてフリーズするということですか?それを行う他の方法はありますか?
ありがとうございました
wpf - WPF 非同期呼び出しの質問
私のコードで何が問題になっていますか? ファイルを削除TextBox
している間は と を更新していません。ProgressBar