int test1 = 0;
int test2 = 0;
public void haveP(object i)
{
int num = (int)i;
for (int j = 0; j < 100; j++)
{
num++;
Thread.Sleep(100);
}
x.BeginInvoke(new Action(() =>
{
number.Text = num.ToString();
}), DispatcherPriority.Normal);
}
public void norP()
{
for (int j = 0; j < 100; j++)
{
test2++;
Thread.Sleep(100);
}
x.BeginInvoke(new Action(() =>
{
number2.Text = test2.ToString();
}), DispatcherPriority.Normal);
}
Dispatcher x;
private void star_Click(object sender, RoutedEventArgs e)
{
x = this.Dispatcher;
if (number.Text.Trim()!="")
{
test1 = (int)Convert.ToDouble(number.Text);
test2 = (int)Convert.ToDouble(number2.Text);
}
//带参数多线程使用
//带参数的多线程使用时,方法必须只有一个参数,并且是object类型
ParameterizedThreadStart ParStart = new ParameterizedThreadStart(haveP);
Thread myThread = new Thread(ParStart);
myThread.Start(test1);
//不带参数多线程使用
Thread newThread = new Thread(norP);
newThread.Start();
}
//定义委托
delegate void DelegateTest(ref int j);
public void norP(ref int i)
{
for (int j = 0; j < 100; j++)
{
i++;
Thread.Sleep(100);
}
x.BeginInvoke(new Action(() =>
{
number.Text = test1.ToString();
number2.Text = test1.ToString();
}), DispatcherPriority.Normal);
}
private void end_Click(object sender, RoutedEventArgs e)
{
x = this.Dispatcher;
//创建委托实例
DelegateTest testdel = new DelegateTest(norP);
if (number.Text.Trim()!="")
{
test1 = (int)Convert.ToDouble(number.Text);
}
//执行委托
testdel(ref test1);
}//定义操作次线程的委托