問題タブ [freezable]
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 - Freezableから派生したWPFオブジェクトをXAMLでフリーズするにはどうすればよいですか?
WPFの多くの種類は、から派生していFreezable
ます。可変POCOオブジェクトに不変性を提供し、特定の状況でパフォーマンスを向上させることができます。
だから私の質問は、XAMLマークアップでオブジェクトをフリーズするにはどうすればよいですか?
(私も同様の、しかし異なる質問を投稿したことに注意してください)。
wpf - WPF オブジェクトをフリーズすると、どのようなシナリオでパフォーマンスが大幅に向上しますか?
WPF の多くの型は から派生していFreezable
ます。変更可能な POCO オブジェクトに不変性を提供し、明らかに、特定の状況でパフォーマンスを向上させることができます。
WPF アプリケーション内でオブジェクトをフリーズすると、パフォーマンスが大幅に向上することに気付いた人はいますか? もしそうなら、凍結されたときに最大のパフォーマンスの違いをもたらしたのはどのアイテムですか?
(同様の別の質問も投稿したことに注意してください)
wpf - 親凍結可能とは何ですか? このエラーはどういう意味ですか?
次のエラーが表示されます。
親とは異なるスレッドに属する DependencyObject は使用できません
それは一体何の意味ですか?英語ですか?親は凍結されていますか、それとも単に凍結可能ですか? エラーが解消される場合、親をフリーズできないようにする方法はありますか?
何が起こっていますか:
私は WPF アプリに 2 つの opengl winforms コントロールを持っていますが、これまでのところ、すべてがスムーズに機能しています (と思います)。ここで、1 つの winform コントロールがイメージを更新するときに、もう一方も同様に更新するように更新を追加しました。それは実際に機能していましたが、今ではそのエラーが発生しています。コードをステップ実行すると、ランダムな場所でクラッシュが発生します。これは、ガベージ コレクションの障害であると思われます (つまり、別のスレッドでの更新により、ガベージ コレクションが行われる何かが作成され、そのコレクションがランダムな時間に発生します)。
例外はメインの run メソッドでキャッチされ、InvalidOperationException です。
ここでストローをつかんでいます。どこから始めればよいですか?
編集:問題を引き起こしている呼び出しは次のようです:
私はまだそれを追跡しています。その一連の行がコメントアウトされている場合でも、クラッシュは発生し、スレッド ステータスには「ちょうど終了した」スレッドがあります (したがって、ガベージ コレクションの仮定)。
wpf - CompositeCollection が Freezable でないのはなぜですか?
MVVM パターンを使用してアプリケーションを作成しています。ビューの DataContext プロパティを ViewModel のインスタンスに設定して、ビューにデータを提供しています。通常、そこから Binding を使用して、自分のやり方で進めます。
最近、ViewModel が提供する「アイテムの選択」というコレクションを超えた「追加の」要素を持つ ComboBox を実装しようとしました。
問題は、 CompositeCollection が Freezable: Freezable Objects Overviewではないことです。これにより、静的な ComboBoxItem のみが表示され、バインディング式の結果は表示されません。
この問題に対する私の最初の反応は、 Freezableである CompositeCollection の独自のバージョンを実装することでした。しかし、これは次の疑問を投げかけます。
そもそも CompositeCollection が Freezable でないのはなぜですか?
私の懸念は、一般的にこれらの決定には理由があり、Freezable を継承しなかった理由を説明するのに十分な知識がないと感じていることです。このコレクションを実装できることはわかっていますが、実装した場合、パフォーマンスに測定可能な違いが生じるのではないかと心配しています。
どんな助けでも大歓迎です。ありがとう!
また、Nullまたはその他の特別な値を挿入し、テンプレートまたは値コンバーターを提供して、必要なことを実行できることを認識していることに注意してください。これは私が興味を持っている質問ではありません...上記の太字の質問のみです。
アップデート:
ArsenMkrt のコメントによってもたらされたさらなる調査の後、これは実際には見落としであると信じるに至りました。証拠は次のとおりです。
- と呼ばれるフリーズ可能なコレクションがあります
FreezableCollection<T>
。CollectionViews を生成しないため、私のニーズには直接不適切です。 - MSFT の Sam Bent は、上記のリンクで同様のことを述べています。彼の連絡先はまだわかりませんが、機会があれば彼と話し合う予定です.
この問題を回避するための現在の計画は、CompositeCollection と のプロパティを持つ新しいコレクションを作成することFreezableCollection<T>
です。うまくいくかどうかはわかりませんが、次のようなことを考えています。
誰かがより良い選択肢を持っているなら、私はそれを聞きたいです!
wpf - WPF アニメーション クラスの拡張の謎
Silverlight のアニメーション タイムライン (DoubleAnimation など) には、EasingFunction と呼ばれるプロパティがあり、2 つの値を補間する関数を指定できます。.NET 4 には入っていますが、これを 3.5 に移植したいと考えています。これを読んだ後、それはかなり実行可能に思えますが、私は奇妙な問題を抱えています.
私は DoubleAnimation を次のように拡張しています:
新しいプロパティを追加する以外に興味深いことは何もしていないことに注意してください。
そして、それをいくつかのコードで使用できます。
そのコードはアニメーションをうまく実行します。
しかし、EasingFunction を設定する行のコメントを外すと、アニメーションは実行されなくなります。CreateInstanceCore メソッドが呼び出されますが、GetCurrentValue は呼び出されません。変?
c# - WPF の外部で Freezable クラスを使用する際の「落とし穴」はありますか?
私は並行性について調べ、より「スレッドセーフ」な観点から物事を見てきました。WPF (または実際には System.Windows.Freezable など) には、「アイスキャンディーの不変性」を与えることができるフリーズ可能なクラスがあります。誰かがこれを WPF/Silverlight の外で使用しようとしたことがありますか? 私はそこにいくつかの良いものがあることを知っています。
wpf - WPF マージされた ResourceDictionary の不整合
これは、Brush オブジェクトと、この Brush オブジェクトを Template プロパティのいくつかのアニメーション化されたプロパティに使用する Style で構成されます (StaticResource マークアップ拡張を介して)。問題は; ディクショナリをグローバル アプリケーション ResourceDictionary (Application.Resources) とマージすると、ブラシはフリーズせず、スタイルを共有するすべての要素がブラシへの変更の影響を受けます。
興味深いことに、ブラシをマージされたセカンダリ ResourceDictionary に移動すると、ブラシがフリーズされ、すべてが期待どおりに機能します (フリーズ可能なオブジェクトは、アニメーション化される前に複製されます)。この問題は、フリーズ可能なオブジェクトと、StaticResource マークアップを介してこのオブジェクトを参照する他のリソースの場合にのみ発生します。拡張子は、同じマージされた ResourceDictionary に存在します。App.xaml、Window.xaml、Dictionary.xaml のサンプル コードを以下に貼り付けました。同じ結果を再現し、これが WPF のバグであることを確認していただければ幸いです。
注: Visual Studio で ResourceDictionary (Dictionary.xaml) のコンテンツ タイプを Page から Resource に変更すると (そして、その BAML バージョンではなく XAML をコンパイル済みアセンブリに埋め込むと)、問題はなくなります。
Window.xaml
App.xaml
Dictionary.xaml
.net - テンプレートから構築されたwpfオブジェクトを自動的にフリーズします
フリーズ可能なwpf-objectsが、DataTemplate、ControlTemplate、またはスタイルを介して生成された場合、どのような場合でも自動的にフリーズされるのは正しいですか?
.net - コードがスタックに表示されない場合にこのエラーをデバッグするにはどうすればよいですか?
アプリケーションで次のエラーが発生することがあります。
親とは異なるスレッドに属する DependencyObject は使用できません
この種のエラーを解決する方法は知っていますが、その場合、どこで発生しているのかわからないため、何を修正すればよいかわかりません... 例外のスタック トレースには、私のコードではなく、.NET フレームワーク コードのみが含まれます ( Main メソッドを除く):
このエラーの原因を追跡するにはどうすればよいですか? アプリケーションは非常に複雑であるため、別のスレッドで実行される可能性のあるすべてのコードを手動でチェックすることは、実際にはオプションではありません...
アドバイスをいただければ幸いです。
wpf - 凍結したオブジェクトの可視性を変更しますか?
WPF/VB.net プログラムを最適化しようとしていますが、いくつかのオブジェクトをフリーズすることを検討しています。ただし、何らかの方法でアニメーション化されたオブジェクトをフリーズできないことは知っていますが、知っておく必要があります...フリーズしたオブジェクトの可視性を変更できますか?
ありがとうございました!