C# でのスレッド化に関して、非常に厄介な問題が発生しています。このコードを使用すると、「フィールド初期化子は非静的フィールド、メソッド、またはプロパティ 'Scraper.Form1.scrapeStart()' を参照できません」というエラーが表示されます。
public partial class Form1 : Form
{
public Thread scrape = new Thread(() => scrapeStart()); //This is where the error happens
public About about = new About();
public Form1()
{
InitializeComponent();
}
public void appendOutput(String s)
{
output.AppendText(s);
output.SelectionStart = output.Text.Length;
output.ScrollToCaret();
output.Refresh();
}
public void scrapeStart(){
Button button1 = new Button();
appendOutput("");
button1.Enabled = true;
}
private void button3_Click(object sender, EventArgs e)
{
about.ShowDialog();
}
private void button1_Click(object sender, EventArgs e)
{
button1.Enabled = false;
scrape.Start();
}
private void button2_Click(object sender, EventArgs e)
{
scrape.Abort();
button1.Enabled = true;
}
}
関数scrapeStartを静的にすると機能することを認識していますが、それはappendOutput( "");を作成します。および button1.Enabled = true エラーをスローします。そして、新しいスレッドを開始した場所 (button1_Click) に配置すると、button2_Click で中止できません。
私はC#に少し精通しているので、すべてがひどく間違っているか、小さな問題である可能性があります。いずれにせよ、誰かが私を助けてくれませんか?