我有一个后台工作人员,它通过 ReportProgress 定期更新 GUI。
更新会定期进行,例如每 5 秒一次,也可以是 20 秒一次。为了在设定的时间执行更新,我让工作进程休眠一段时间,当它醒来时,它会用新信息更新 GUI。
工作人员支持取消,并且在睡眠之外它可以正确取消。
我希望能够在等待期间调用取消,但是将线程发送到睡眠状态使这成为不可能。
我假设我必须调用一个循环并检查取消作为循环的一部分来模拟线程睡眠。
实现这一目标的最佳方法是什么,我的时间完全与我的尝试无关。
long counter = 0;
long sleepfor = timelinespeed*1000;
int timelinespeed = 10;
while (counter != sleepfor)
{
Thread.Sleep(1);
counter++;
if (bkgwk.CancellationPending)
{
cancelled = true;
e.Cancel = true;
bkgwk.Dispose();
break;
}
}