110,533
社区成员
发帖
与我相关
我的任务
分享
private readonly object _tasklock = new object();
private bool _locking = false;
private volatile bool _contloop = true;
private void frm_Load(object sender, EventArgs e)
{
var t = new Thread(()=>
{
lock (_tasklock) { }
do
{
func1();
func2();
func3();
lock (_tasklock) { }
} while (_contloop);
});
t.IsBackground = true;
Monitor.Enter(_tasklock, ref _locking);
t.Start();
}
private void btnA_Click(object sender, EventArgs e)
{
if (_locking)
{
Monitor.Exit(_tasklock);
_locking = false;
}
else
{
Monitor.Enter(_tasklock, ref _locking);
}
}
private void btnB_Click(object sender, EventArgs e)
{
if (_locking)
{
Monitor.Exit(_tasklock);
_locking = false;
}
else
{
Monitor.Enter(_tasklock, ref _locking);
}
}
private void frm_Closed(object sender, EventArgs e)
{
_contloop = false;
if (_locking)
{
Monitor.Exit(_tasklock);
_locking = false;
}
}
bool m_break = false;
void Exture()
{
for(int i = 0, i< 100000000, i++){
if(this.m_break) {break;}
}
}
private void A_Click(object sender, EventArgs e)
{
Execute1(true);
}
private void B_Click(object sender, EventArgs e)
{
Execute1(false);
}
private void Execute1(bool isContinue)
{
Execute2(isContinue);
}
private void Execute2(bool isContinue)
{
Execute3(isContinue);
}
private void Execute3(bool isContinue)
{
if (isContinue)
Execute1(isContinue);
}