我安装了Visual c#2010 express,我想调用一个使用线程获取参数的方法,但是在执行该方法时,线程应该停止,我应该看到对表单的影响,以及然后该方法应该继续。
该操作只是移动Label
- 从表单上form_load
事件的代码生成的。{/ p>
我使用了三种不同的方法来调用Thread.sleep()
方法,但是每个方法都没有被intellisense建议或导致异常 - 对于最后一种情况,我想要理解。
为什么我有这个例外,它是什么意思?
是否有更好的方法可以遵循?。
public Thread thr;
private void Form1_Load(object sender, EventArgs e)
{
Label os = (Label)this.Controls[0];
os.Text = "codeLB";
thr = new Thread(() => Beta(os,thr));
thr.Start();
}
public void Beta(Label os,Thread tr)
{
1. os.Location = new Point(os.Location.X + 10, os.Location.Y + 10);
while(os.Location.Y<=400)
{
this.Refresh();
//here I want to sleep the thread.
//tr.sleep(1000); doesn't work (not suggested)
//Thread.CurrentThread.sleep(1000); doesn't work (not suggested)
Thread.Sleep(1000); // it works but it causes an unhandled InvalidOperationException in line 1
"Cross-thread operation not valid: Control '' accessed from a thread other than the thread it was created on."
os.Location = new Point(os.Location.X + 10, os.Location.Y + 10);
}
os.Location = new Point(0, 0);
}
非常感谢。