私は最近これについての投稿をしましたが、私の最後の質問はよく書かれていなかったと私は答えを得たと思うが、私は最後のものが混乱しているように単純な解決策があるかどうかを見たい。今回私はできるだけ明瞭にそれを書こうとしました。新しいスレッドが新しいウィンドウを開く、新しいウィンドウでテキストボックスを更新する方法?
私はここにWPFアプリケーションの次のコードを持っているがMainWindow.xaml.csからコード
コードが
public MainWindow()
{
InitializeComponent();
}
private void button1_Click(object sender, RoutedEventArgs e)
{
Thread[] threads = new Thread[3];
for (int i = 0; i < 3; i++)
{
int index = i;
threads[i] = new Thread(new ThreadStart(test));
threads[i].SetApartmentState(ApartmentState.STA);
threads[i].IsBackground = true;
threads[i].Start();
}
}
public void test()
{
OutputWindow outputwindow = new OutputWindow();
outputwindow.Show();
System.Windows.Threading.Dispatcher.Run();
outputwindow.textBox1.Text = "writing";
//some more stuff done
//some more stuff done
//some more stuff done
outputwindow.textBox1.Text = "\nmore writing";
//some more stuff done
//some more stuff done
//some more stuff done
outputwindow.textBox1.Text = "\nmore writing";
}
どのように私は(textBox1.Textが実際にテストとして更新されますすることができます)です実行されていますか?
よろしくお願いいたします。あなたの答えのための
EDIT
おかげで、私はそれがまだ動作させることができませんでした。
これはネットワークアプリケーションなので、タイムアウト、ping、およびプログラム全体で多くの情報を印刷して、すべてが計画どおりに進行していることを確認したいので、テキストボックスがデータバインディングより適していると思います。
私はあなたの答えのいくつかを試しましたが、動作させることができませんでした。これは私が試した最後の例ですが、うまくいきません。
public MainWindow()
{
InitializeComponent();
}
private void button1_Click(object sender, RoutedEventArgs e)
{
Thread[] threads = new Thread[3];
for (int i = 0; i < 3; i++)
{
int index = i;
threads[i] = new Thread(new ThreadStart(test));
threads[i].SetApartmentState(ApartmentState.STA);
threads[i].IsBackground = true;
threads[i].Start();
}
}
public void test()
{
OutputWindow outputwindow = new OutputWindow();
outputwindow.Show();
System.Windows.Threading.Dispatcher.Run();
outputwindow.textBox1.Text = "writing";
//some more stuff done
//some more stuff done
//some more stuff done
outputwindow.textBox1.Text = "\nmore writing";
//some more stuff done
//some more stuff done
//some more stuff done
Action action =() => outputwindow.textBox1.Text = "\nmore writing";
Dispatcher.Invoke(action);
}
ありがとうございます。どうもありがとう。 – Arya
ウィンドウが閉じているときに作業メソッドが動作を停止させるためにとにかくありますか?今は、毎秒Console.beep()を使用して無限ループで試してみました。ウィンドウを閉じても、ビープ音が鳴ります。 – Arya
代わりにタブを使用し始めましたが、よりうまく動作します – Arya