あらすじ:
非スレッドアプリケーションをスレッドアプリケーションに変換しようとしています。私は約10年間、アプリケーションでスレッドを使用しておらず、その概念に非常に錆びています。私が把握していないことがあります。私の(非常に短い)コードの前後を見て、私が間違っていることと、なぜそれが間違っているのかを確認してください。すべての助けは大歓迎です!ありがとう!
見られるエラー:
コードが応答していません。ボタンを実行して実行し、アプリケーションを起動できますが、新しいスレッドを開始して動作するのではなく、ボタンがフリーズして「応答していません」というメッセージが表示されます。何を間違えたのかわかりません。スレッドを正しく実装しませんでしたか?
非スレッドコード:
//this opens the user input windows form
private void UserInputButton_Click(object sender, EventArgs e)
{
enumerationStation EnumerationForm = new enumerationStation();
EnumerationForm.Show();
//userform UserForm = new userform();
//UserForm.Show();
}
//this opens the correlationApplication windows form
private void CorrelationApplication_Click(object sender, EventArgs e)
{
CorrelationApplication CorrelationApplicationForm = new CorrelationApplication();
CorrelationApplicationForm.Show();
}
壊れたスレッドコード:
//this opens the user input windows form
private void UserInputButton_Click(object sender, EventArgs e)
{
BackgroundWorker bg = new BackgroundWorker();
bg.DoWork += new DoWorkEventHandler(enumerationStuff);
bg.RunWorkerAsync();
}
//run enumeration application in new thread
private void enumerationStuff(object sender, DoWorkEventArgs e)
{
enumerationStation EnumerationForm = new enumerationStation();
EnumerationForm.Show();
}
//this opens the correlationApplication windows form
private void CorrelationApplication_Click(object sender, EventArgs e)
{
BackgroundWorker bg = new BackgroundWorker();
bg.DoWork += new DoWorkEventHandler(correlationStuff);
bg.RunWorkerAsync();
}
//run correlation application in new thread
private void correlationStuff(object sender, DoWorkEventArgs e)
{
CorrelationApplication CorrelationApplicationForm = new CorrelationApplication();
CorrelationApplicationForm.Show();
}