如何在执行操作之前暂停

时间:2013-10-06 21:54:54

标签: c# windows-phone-7 windows-phone-8

在执行操作(启用应用程序栏按钮)之前,我需要在应用程序中快速暂停,但我不确定如何最好地完成此操作。基本上,很多处理正在另一个线程中发生,但随后UI被更新。更新UI后,我将一个数据透视控件滚动到特定的数据透视表项。我想暂停约1秒钟,或者在允许启用应用程序栏按钮之前滚动到枢轴控件中的前一个枢轴项目需要多长时间。我怎么能做到这一点?我到目前为止的内容如下

// Show image and scroll to start page if needed
if (Viewport != null)
{
    Viewport.Source = result;
    if (editPagePivotControl != null && editPagePivotControl.SelectedIndex != 0)
    {
    //Here is where the pivot control is told to move to the first item
    // (from the second which it will be on before this happens)
        editPagePivotControl.SelectedIndex = 0;
    }
    //A flag to determine whether the app bar button should be enabled
    //How to pause for the time it takes to finish moving
    // to the first pivot item?         
    if (_wasEdited)
        ((ApplicationBarIconButton)ApplicationBar.Buttons[0]).IsEnabled = true;
    }

1 个答案:

答案 0 :(得分:1)

尝试使用System.Windows.Threading.DispatcherTimer

if (_wasEdited)
{
   DispatcherTimer t = new DispatcherTimer(DispatcherPriority.Normal, Dispatcher);
   t.Tick += new EventHandler((o,e) => 
     ((ApplicationBarIconButton)ApplicationBar.Buttons[0]).IsEnabled = true;
   t.Interval = TimeSpan.FromMilliseconds(1000);
   t.Start();
}

这将等待1000毫秒,然后返回到UI线程(因为我们在Dispatcher构造函数中设置了DispatcherTimer)并启用了应用程序栏。

如果您经常这样做,请考虑让计时器成为班级成员。