class Class1
{
public bool Read(int i)
{
lock (this)
{
//需要一段时间,中途不能暂停。
}
return true;
}
} public partial class Form1 : Form
{
private Class1 c1 = new Class();
private bool isOpen = false;
private bool isRead = false; public Form1()
{
Thread th = new Thread(new ThreadStart(delegate()
{
while (isOpen == true)
c1.Read(100);
}));
th.Start();
} private void btnRead_Click(object sender, EventArgs e)
{
isRead = c1.Read(2); //问题在这里,怎样让它执行。 Class1不能修改了。
}
}分数全给有用的回答。
那有没有办法把th线程改改,让他每循环一次就去执行Read(2)(如果有的话)。
广告费100分留下
{
while (isOpen == true)
{
c1.Read(100);
Thread.Sleep(0); //主动放弃一下剩余的时间片
}
}));
1.如果你的Read里的代码段要求是原子性的,那么当Read(1000)在运行的时候,你的Read(2)当然不能运行了,必须等Read(1000)结束;
2.如果Read(1000)在运行的时候可以运行Read(2),那么你的lock就是废的,根本不该加。
如上