0

私の Silverlight 4.0 アプリケーションでは、ある時点で、ユーザーがボタンを押した後、しばらく (5 ~ 10 秒) かかるいくつかの UI オブジェクトを作成する必要があります。この間、もちろん UI はフリーズします。UI が少なくともプログレス バーを表示できるように、これらのオブジェクトの作成をバックグラウンド ワーカーに配置することにしました。

しかし、この解決策は機能しません。UI オブジェクトを作成するには、UI スレッドにいる必要があります。これらのオブジェクトの作成を内部に配置Dispatcher.BeginInvoke()すると、UI がフリーズします。ほとんどの場合、進行状況バーも表示されません。これを回避する方法はありますか?

Silverlight がバックグラウンドで UI オブジェクトを作成している間、進行状況バーを表示できますか?

4

2 に答える 2

0

内にUIオブジェクトを作成する前に、カスタムメッセージを表示してみることができますBeginInvoke()

例:

private void CreateObjects()
{
    myMsg.Text = "Loading...";
    Dispatcher.BeginInvoke(() => { AddObjects() });
}

すべてのオブジェクトが作成されたら、メッセージを無効にします。

プログレスバーでも同様のことができます。

于 2012-07-24T06:50:00.790 に答える
0

このフォーラムの投稿をご覧ください。それは役立つかもしれません。

使用する代わりに:

System.Windows.Threading.Dispatcher.BeginInvoke(() => {});

彼らは以下を使用します:

System.Windows.Deployment.Current.Dispatcher.BeginInvoke(() => {});
于 2012-07-23T20:03:29.707 に答える