gpt4 book ai didi

multithreading - Windows 7 Phone中的线程问题

转载 作者:行者123 更新时间:2023-12-03 13:18:04 25 4
gpt4 key购买 nike

你好
我正在使用Silverlight在基于Windows 7手机的应用程序中工作。我的一个UI类GameScreen.xaml中具有以下方法。我在构造函数GameScreen中调用startTimer方法。问题是,当调用updateTime方法时,

timeLabel.Text = "Time left:  00 : " + time;

行执行后,程序将在时间变量上抛出UnauthorizedAccessException。
private void startTimer()
{
timeThread = new Thread(new ThreadStart(startThread));
timeThread.Start();
}

public void startThread()
{
while (timeLeft > 0)
{
Thread.Sleep(1000);
updateTime();
if (timePassed % 10 == 0)
{
findNextBGResource();
changeBackgroundScene();
}
}
}


private void updateTime()
{
// update the view
String time = timeLeft.ToString();
if (timeLeft < 10)
{
time = "0" + time;
}
if (doUpdateTime && timeLeft >= 0)
{
timeLabel.Text = "Time left: 00 : " + time;
}
}

有人可以在这方面帮助我吗?

最好的祝福...

最佳答案

基本上,除了调度程序线程之外,您不能通过其他任何方式修改UI。两种选择:

  • 使用 Dispatcher.BeginInvoke 在调度程序线程
  • 中执行修改用户界面的代码
  • 使用 DispatcherTimer 而不是启动新线程并进入休眠状态-这样,“滴答”将已经出现在UI线程中。
  • 关于multithreading - Windows 7 Phone中的线程问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4022013/

    25 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com