0

1つのウィンドウを持つWPFアプリケーションがあります。このウィンドウには、1つの画像と1つのテキストブロックがあります。アプリケーションは、マウントするISOの名前であるコマンドライン引数を取ります。次に、必要に応じて画面の解像度を変更し、仮想CDにアプリケーションをロードして、そのプロセスが終了するのを待ちます。ISOがマウント解除された後、画面は元の状態に戻ります。このすべてが進行している間、メッセージがユーザーに表示され、プロセスのどこにいるかを知らせます。

テキストブロックを使用して進行状況テキストをユーザーに表示していますが、プロセス全体が次のイベントで開始されます。

private void Window_ContentRendered(object sender, EventArgs e)
{

    txtMessage.Text = ConfigurationManager.AppSettings.Get("MountISO");
    //Call routine to mount ISO

    txtMessage.Text = ConfigurationManager.AppSettings.Get("SettingResolution");
    // call routine to set resolution

    .
    .
    .
    .etc

}

ただし、ウィンドウは期待どおりに読み込まれますが、テキストブロックにテキストは表示されません。

イベントのコードはありWindow_Loadedましたが、処理が完了するまでウィンドウは最小化されたままでした。

私は明らかにこれを間違った方法で行っていますが、どこが間違っているのかを教えてくれるものを見つけることができません。

4

1 に答える 1

1

非同期プログラミングは、ここでやりたいことかもしれません。StackOverflowでC#のようなものを検索するか、 TaskクラスTaskに関するMicrosoftのドキュメントを読んでください。

イベントはそのContentRenderedようなものを置く場所ではありません。通常Window_Loaded、最初に行ったのと同じですが、もちろん、アプリケーションは、実行している長期的なアクションによってブロックされます。

于 2012-09-21T12:05:59.247 に答える