0

単純なイベントを持つクラスがありますが、イベントが発生すると、イベントパラメーターに応じて TextBlock.Text を変更するサブスクライブメソッドは何もしません。なぜこれが起こっているのか分かりませんか?おそらく非常に単純なことですが、答えを見つけることができませんでした。

<!-- this is the event of my WordHelper class -->
public delegate void WordHelperHandler(string attempt);
public event WordHelperHandler WordParsed;

<!-- this is excerpt from MainPage class -->
public MainPage()
    {
        InitializeComponent();
        helper = new WordHelper();
        helper.WordParsed += SetText;
        helper.Load(); //this method calls the event
    }
public void SetText(string text)
    {
        PageTitle.Text = text;
    }

4

1 に答える 1

1

あなたのコードは基本的に UI スレッドで多くの作業を行っているようです。これにより、完了するまで UI が応答しなくなります。

代わりに、バックグラウンド タスクを別のスレッドで実行する必要があります。次に、イベント ハンドラーで、を使用しDispatcherて UI スレッドに戻り、テキスト ボックスを更新する必要があります。

public void SetText(string text)
{
    Action action = () => PageTitle.Text = text;
    Dispatcher.BeginInvoke(action);
}
于 2013-09-11T20:42:22.710 に答える