0

何かが機能していますが、それが問題ないかどうか、後で問題が発生するかどうかはわかりません。

ビデオ処理を行い、表示に Direct3D を使用する Win32 C++ アプリがあります (私のコードではありません)。私の仕事は、GUI を C# GUI に置き換えることです。

C++ コードを dll にしました。C# で GUI を作成し、ビデオ表示用のパネルを用意しました。このパネルの HWND を dll に渡すと、すべて正常に動作するようです。

しかし - そのパネルは、それが作成されたスレッド以外のスレッドによってアクセスされています。これは行うべきではありません。
私の一部は「十分に一人で去りたい」と思っていますが、これは間違っていると感じており、将来的に問題が発生するのではないかと思います. パネルでクリックイベントをキャッチしたい場合など、パネルを作成したメインスレッドまたは UI スレッド上にあります。

これをどのように行うべきかについての提案はありますか? ありがとう

4

2 に答える 2

2

これに対する答えはすでにご存知だと思います。Windows にはスレッド アフィニティがあります。ウィンドウに対するすべての操作は、それを作成したスレッドから実行する必要があります。

このルールを考えると、DLL がウィンドウ アクセスを別のスレッドに移動する責任があるとは想像できません。解決策は、DLL を呼び出す同じスレッドでウィンドウを作成してアクセスすることです。

于 2011-11-19T21:39:17.550 に答える
0

この手法で私が見た主な問題は、UI がちらつく可能性があることです。WPF を使用するプロセスの初期段階にある場合は、現在行っていることがほとんど機能しない場合は、 D3DImageを確認することをお勧めします。

于 2011-11-19T21:37:01.733 に答える