2012-04-13 17 views
1

キオスクアプリケーションで次の問題が発生しました。guiが更新されない

私はいくつかのサムネイルのウィンドウを持っています。ユーザーがサムネイルをクリックすると、infoを持つ別のウィンドウ(docview)が表示され、中央にドキュメントが表示されます。

ドキュメントビューを即座に表示してからドキュメントのロードを開始します1〜3秒かかる)、それを後でインターフェースに追加する。瞬間、私は親指をクリックすると、インタフェースが1秒か2秒のためにフリーズし、その後docviewはすでに文書で表示されている時に

..

これは私が何をすべきかです:

 viewgrid.Children.Add(docView); // the main window uses this grid to display the windows 
     viewgrid.InvalidateVisual(); 
     viewgrid.UpdateLayout(); // at this point I would like to have the docView visible 
     docView.showDocument(); //and afterwards, the loading of the document should start and be also visible eventually.. 

私はLayoutUpdatedイベントを成功させずに使用しようとしました。別のスレッドにshowDocumentを置いても問題ありませんでした。私はApplication.DoEvents()についても読んでいますが、それは廃止されていて、とにかく悪い練習に見えました..

どうすれば解決できますか?

ありがとうございます!

答えて

0

ドキュメントを読み込むには、BackgroundWorkerオブジェクトを使用する必要があります。あなたはスレッディングを試みたが、うまくいかないと言いましたが、スレッディングが機能するようにする必要があり、バックグラウンドワーカーを使用することをお勧めします。 http://www.rhyous.com/2011/08/01/loading-a-richtextbox-from-an-rtf-file-using-binding-or-a-richtextfile-control/

あなたはBackgroundWorkerのでドキュメントを読み込むだけで同じことをするだろう:私はあなたがロードされている文書の種類がわからないのですが、ここで説明したように、私はバインディングを使用してリッチテキストファイルをロードし http://msdn.microsoft.com/en-us/library/system.componentmodel.backgroundworker(v=vs.110).aspx

。ドキュメントが読み込まれると、バインドされたプロパティが更新され、UIが更新されます。

+0

私はあなたが私が欲しいものをかなり理解しているとは思わない...知りたいのは、 'IsRendered'私のレイアウトがレンダリングされ可視になったら、ドキュメントのロードを開始できることがわかっています。ドキュメントそのものは、Microsoft PowerPointのinterop dllによってロードされるパワーポイントです。 – Daan

+0

これは私が理解したものです。 WPFにドキュメントをロードする要素があります。要素をすぐに表示したいが、空の状態にして、文書を背景の作業者の速度でロードしたい。 – Rhyous

+0

さて、背景作業者が先に読み込んで完了したら、どうすればいいですか?私は本当にパワーポイントのDLLを制御することはできません.. – Daan

0

非同期バインディングを使用できます。あるいは、別のスレッドとDispatcherを使用して手動で実行してください。しかし、それはあなたのShowDocumentがやっていることに依存し、それは遅いです。

+0

これを手動で行うにはどうすればよいですか?スレッドが待っていて、docview画面が表示されていれば、ドキュメントの読み込みを開始することができます。しかし、画面が読み込まれて表示されていることをどのように知ることができますか?イベントレイアウトの更新が早す​​ぎます。 – Daan

+0

あなたのshowDocumentがやっていることが分かりません。ドキュメントをゆっくりと読み込んで、何とかそれを表示しますか?または、いくつかのコントロールを表示するだけですが、レンダリングが遅くなります。 – Nikolay

+0

showDocumentメソッドは、WindowsFormHostをdocviewに追加します。次に、Microsoft Office Interopのdllを使用してドキュメントをロードし、SetParent呼び出しを使用してwindowsformhostにこのドキュメントを配置します。 – Daan

関連する問題