Windows phone 7 Dispatchermer未在AdControl运行时更新

Windows phone 7 Dispatchermer未在AdControl运行时更新,windows-phone-7,ads,dispatchertimer,Windows Phone 7,Ads,Dispatchertimer,我有一个简单的应用程序,我正在创建一个倒计时计时器,它使用dispatchermer作为时基。我为Dispatchermer的On_Tick设置了一个事件处理程序(设置为1秒间隔)。我有三(3)个pivot页面,使用了三个不同的AdControl实例,所有这些页面都是“实时”的,有一个真正的ApplicationID和AdUnitID。此计时器设置在其中一个透视页面上 我看到的是,当我打开应用程序,AdControl启动时,60秒后,AdControl想要刷新。我的计时器在第一分钟工作正常,然后

我有一个简单的应用程序,我正在创建一个倒计时计时器,它使用
dispatchermer
作为时基。我为Dispatchermer的On_Tick设置了一个事件处理程序(设置为1秒间隔)。我有三(3)个pivot页面,使用了三个不同的
AdControl
实例,所有这些页面都是“实时”的,有一个真正的ApplicationID和AdUnitID。此计时器设置在其中一个透视页面上

我看到的是,当我打开应用程序,AdControl启动时,60秒后,AdControl想要刷新。我的计时器在第一分钟工作正常,然后开始每三秒丢失一秒,就像它丢失了一个滴答声事件一样(巧合的是,当adcontrol每三秒“滚动”到一条新消息时?)。我曾尝试为调度员使用后台工作人员,但这似乎对我没有任何帮助。事件处理程序中的代码相当短,只有几个“if-then”语句和一些textBlock更新


还有人看到过AdControl的类似问题吗?

我想说的原因是,ad控件和计时器都希望在UI线程上执行某些操作。因此,当ad控件忙时,计时器动作在此期间被阻止。引述:

计时器不能保证在时间间隔结束时准确执行 发生,但保证不会在时间之前执行 间隔发生。这是因为Dispatcher操作被放置在 与其他操作一样,在调度程序队列上。当 Dispatchermer操作的执行取决于中的其他作业 队列及其优先级

它还解释了为什么使用后台工作人员没有帮助。一旦您从另一个线程返回到UI线程,您就会再次遇到相同的问题。所以这个问题基本上是设计的

哦,也可以反过来。如果您将在UI线程中执行密集的工作,则ad控件将被阻止。以及用户界面的其他部分。这就是为什么您应该在后台线程中做尽可能多的工作的原因。也许广告控制部门不遵守这个建议


到目前为止,这可能对你帮助不大。但也许可以只使用一个AdControl,并在用户移动时将其从一个轴移动到另一个轴?

我自己的计时器式应用程序也遇到了同样的问题。在我的例子中,只有当当前广告中有动画时才会出现这种情况

根据Dispatchermer文档,延迟是预期行为,因此解决方案是使用不同的计时器。。。例如系统定时器

...
    //create the timer
    var timer = new System.Threading.Timer(
        new System.Threading.TimerCallback(TimerTick), 
        null, 
        //Set the due time to infinite so the timer wont start immediately
        System.Threading.Timeout.Infinite,
        0);

    //start the timer
    timer.Change(0, 1000);

    //stop the timer
    timer.Change(System.Threading.Timeout.Infinite, 0);
}

void TimerTick(object state)
{
    //Dont forget to update the UI on the UI thread.
    Dispatcher.BeginInvoke(() =>
        {
            MyTextBox.Text = "New Text";
        });
}
问题解决了