【发布时间】:2015-10-22 13:28:32
【问题描述】:
我的问题如下:
1.我有一个密集的方法可以在一个while循环中更新GUI元素(图表)
2.当按下按钮时,我需要跳出这个循环。
3.问题是按钮事件处理程序在while循环完成之前不会被执行。
4.我尝试在单独的线程上运行该方法,但这很成问题,因为它设置和读取许多 UI 元素,我几乎无法让它工作,所以我希望有一种方法在单独的线程上运行停止按钮并更新一个全局变量,让我跳出循环。
知道如何实现吗?
private void playBack(int playTime, int runUntil)
{
var frameTime = new DateTime(); var frameTime_ = new DateTime();
bool fwd = true;
if (runUntil < playTime) fwd = false;
playTime = trPlay.Value;
playGoStop = true;
lbPlayTime.Text = (playTime * numDtStepSize.Value).ToString();
while (true) //trPlay.Maximum + 1)
{
frameTime = DateTime.UtcNow;
if ((frameTime - frameTime_).TotalMilliseconds > (double)(1000 / numFps.Value))
{
systemUpdate(playTime);
trPlay.Value = playTime;
trPlay.Update();
lbPlayTime.Update();
frameTime_ = frameTime;
if (fwd)
{
playTime++;
if (playTime > runUntil) break;
}
else
{
playTime--;
if (playTime < runUntil) break;
}
}
if (!playGoStop) break;
}
}
【问题讨论】:
-
如果您可以显示当前代码的相关部分,那将很有帮助。
标签: c# user-interface button interrupt