【问题标题】:Windows 7 Phone - Putting a delay in screen navigationWindows 7 Phone - 延迟屏幕导航
【发布时间】:2011-05-03 18:28:56
【问题描述】:

嗨 我正在尝试延迟屏幕导航。加载 MainPage 屏幕后,我想在 3 秒后导航到 MainMenu 屏幕。我为此编写了以下代码。

public MainPage()
    {
        InitializeComponent();
        this.Loaded += new RoutedEventHandler(Default_Loaded);         
    }

    private void Default_Loaded(object sender, RoutedEventArgs e)
    {
       Thread.Sleep(3000);
       this.NavigationService.Navigate(new Uri("/MyProject;component/MainMenu.xaml", System.UriKind.RelativeOrAbsolute));
    }

但是这段代码似乎不起作用。不存在预期的延迟(3 秒)。有人可以帮忙吗?

最好的问候

【问题讨论】:

  • 只是出于兴趣,您延迟的原因是什么?
  • 实际上在显示启动画面后,我会将用户带到一个屏幕,在该屏幕上显示特色产品的图标以向用户介绍它们。我显示该屏幕 3 秒钟,然后将用户重定向到主菜单。

标签: c# windows-phone-7 navigation delay sleep


【解决方案1】:

您可以尝试两件事(以及最后一分钟的想法)。

1st,我看到人们抱怨 Thread.Sleep() 不起作用,但在每种情况下,他们一直在 UI 线程上执行此操作。我自己成功地使用了 Thread.Sleep() ,但是这样做时它一直在后台工作线程中。我尚未对此进行进一步调查,但您可能想查看一下。

在此处使用后台工作人员的一个很好的演练(由 Pham Tien Sinh 在 msdn 上发布)。

Phạm Tiểu Giao - Threads in WP7

第二,你也可以实现一个计时器。这里有两个选项。

DispatcherTimer Class (System.Windows.Threading)

Timer Class (System.Threading)

哦,想到的另一件事,因为您正在做一些启动导航技巧...查看 Peter Torr 关于地点和重定向导航主题的帖子。根据您的尝试,您可能会在那里找到一些有用的宝石。在任何情况下都需要注意的好内容。

Introducing the concept of “Places” - Peter Torr's Blog

Redirecting an initial navigation - Peter Torr's Blog

【讨论】:

  • 太棒了!我使用了 Timer 类,它运行良好。谢谢米克。
【解决方案2】:

如果你想冻结应用程序(例如你需要测试线程)并且由于某些原因你不想使用 Thread.Sleep() 你可以自己做一个简单的睡眠函数

public static class Threads
{
    public static void Sleep(int milisec)
    {
        DateTime now = DateTime.Now;
        DateTime endOfSleep = now.AddMilliseconds(milisec);

        while (DateTime.Now < endOfSleep)
        {
        }
    }
}

【讨论】:

    【解决方案3】:

    我刚用过,效果很好。以防万一我添加了

    using System.Threading;
    

    using System.Windows.Threading;
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多