■ 引数を渡すには...
* ParameterizedThreadStartデリゲートを使う
* 引数の型は、object型1つ。
■ サンプル
例1
private void button1_Click(object sender, EventArgs e)
{
Thread thread = new Thread(
new ParameterizedThreadStart(this.Proccess));
List<string> list = new List<string>()
{
"Red", "Blue", "White", "Yellow",
};
// ★Start()の引数として渡す
thread.Start(list);
}
// ★引数は、object型で。
private void Proccess(object arguments)
{
// ★object型を型変換する
List<string> list = arguments as List<string>;
string answer;
if (list.Contains(this.textBox1.Text))
{
answer = "There is your color in our list";
}
else
{
answer = "No color...";
}
this.Invoke(new MethodInvoker(delegate
{
this.label1.Text = answer;
}));
}
例2
public class Class1
{
public string subValue = "subValue1";
}
// 引数が1つしかないので、渡す用のClassを用意
public class DataPool
{
public string value = "value1";
public Class1 classValue = new Class1();
}
private void button7_Click(object sender, EventArgs e)
{
Thread thread = new Thread(
new ParameterizedThreadStart(this.SampleProccess));
// Start()の引数として渡す
thread.Start(new DataPool());
}
// 引数は、object型で。
private void SampleProccess(object arguments)
{
// object型を型変換する
DataPool data = arguments as DataPool;
this.Invoke(new MethodInvoker(delegate
{
this.label1.Text = data.value +
" " + data.classValue.subValue;
}));
}