0

私は本当に必死です。WPF MVVMアプリを使用しており、USBを介していくつかのパケットを送受信します。そのためにライブラリを使用していますが、このライブラリにはHwndSourceが必要です。すべて正常に動作しますが、多くのパケットを送信する必要があり、時間がかかるため、BackgroundWorkerを使用してProgressBarを表示することにしましたが、このエラーが発生したため、BackgroundWorkerでHwndSourceを使用する方法がわかりません。

多くのUIコンポーネントがこれを必要とするため、呼び出しスレッドはSTAである必要があります。

誰かがこの問題で私を助けることができますか?
ありがとうございました。

4

3 に答える 3

0

HwndSourceUIスレッドからを渡すことができますBackgroundWorkerか?もしそうなら、それがパフォーマンスの問題を引き起こさないのであれば、それは最も簡単でしょう。これによりパフォーマンスの問題が発生する場合は、を使用するのではなく、独自のSTAスレッドを作成してそこで作業を行うのが最善の策かもしれませんBackgroundWorker

于 2012-04-12T17:31:35.503 に答える
0

個別のスレッドを使用する場合は、STA(シングルスレッドアパートメント)に配置する必要があります。これは、バックグラウンドワーカースレッドには当てはまりません。この回答に記載されているように、おそらく自分でスレッドを作成する必要があります

Thread t = new Thread(ThreadProc); 
t.SetApartmentState(ApartmentState.STA); 
t.Start(); 

タイプのThreadProcであると。delegateThreadStart

于 2012-04-12T17:32:29.777 に答える
0

進行状況コントロールを更新しようとする場合を除いて、機能しているように聞こえます。BWのProgressChangedイベントで、コントロールを直接更新しようとすると、発生しているエラーが発生する場合があります。MVVMを使用しているため、ProgreeChangedイベントで、進行状況制御にバインドされているview-modelプロパティを更新する必要があります(まだ行っていない場合)。

于 2012-04-12T17:49:04.023 に答える