コンソール出力のリダイレクトに関する質問に答えるには:
出力したい文字列でイベントを発生させるようにコードを変更したほうがよいでしょう。次に、UIでそのイベントのハンドラーを追加し、ハンドラーでテキストフィールドを更新します。
イベントを宣言するには、処理クラスに次のようなコードを追加します。
public event EventHandler<StringEventArgs> Process_Message;
ここで、は送信するメッセージをラップするStringEventArgs
ベースのクラスです。EventArgs
イベントを発生させるには、処理クラスに次のようなコードを追加します。
Process_Message(this, new StringEventArgs(message));
UIクラスにメッセージハンドラーをアタッチするには:
process.Process_Message += Process_Message;
イベントを処理するには、次のコードのようなものをUIクラスに追加します。
private void Process_Message(object sender, StringEventArgs e)
{
Action action = () => UpdateStatus(e.Message);
{
Dispatcher.Invoke(System.Windows.Threading.DispatcherPriority.Normal, action);
}
else
{
action();
}
}
UIは別のスレッドから更新できないため、スレッドテストを実行する必要があります。
次に、UpdateStatus
メソッド:
private void UpdateStatus(string message)
{
statusTextBox.Text = message;
}
もちろん、アプリケーションに合わせて名前を変更する必要があります。
イベントとEventArgs
MSDNを検索します。