мой вопрос заключается в следующем:Пользовательский интерфейс работает на отдельной теме?
1.I имеют интенсивный метод, который обновляет графический элемент (диаграмма) в цикле в то время как
2.I нужно вырваться из этого цикла, когда нажата кнопка.
3.Проблема - обработчик событий кнопки не запускается до тех пор, пока цикл while не будет завершен.
4. Я пробовал использовать метод в отдельной ветке, но это очень проблематично, поскольку он устанавливает и считывает множество элементов пользовательского интерфейса, в значительной степени я не мог заставить это работать, поэтому я надеюсь, что способ запустить только кнопку остановки в отдельном потоке и обновить глобальную переменную, которая позволит мне выйти из цикла.
Любая идея, как это можно сделать?
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;
}
}
Если вы можете показать соответствующие части вашего текущего кода, это будет полезно. – sstan