重新启动应用后,事件为空

时间:2013-08-19 22:06:56

标签: c# windows-phone-8

目前我的App.xaml.cs中有一个事件

    public partial class App : Application
    {
        public static event EventHandler SettingsSaved;

        private async void Application_Launching(object sender, LaunchingEventArgs e)
        {
            if (SettingsSaved != null)
            {
                SettingsSaved(this, null);
            }
     }

和我的MainPage.xaml.cs

    public MainPage()
    {        
        InitializeComponent();

        App.SettingsSaved += App_SettingsSaved;

    }

    void App_SettingsSaved(object sender, EventArgs e)
    {
         //do something here
    }

第一次启动应用时,SettingsSaved工作正常,但第二次启动应用时,SettingsSaved变为空。有没有办法确保SettingsSaved与第一次启动应用程序时的工作方式相同?

我是一名新手编码员,我很确定我在这里缺少一些非常基本的东西。

2 个答案:

答案 0 :(得分:0)

可以尝试将其放在App.Initialize事件中,以确保它在启动时绝对发生,而不是将其放在公共MainPage()中。

答案 1 :(得分:0)

我想我弄明白了这个问题。我相信在发布事件之前我必须首先订阅事件,在上面的代码中,我无法首先订阅它,因为App.xaml.cs首先被执行,然后才能在我的主页中订阅它.xaml.cs。

这对我来说是第一次启动我的应用程序,因为我有一些等待的东西。

我的解决方案更像是一个黑客,我等待这样的延迟任务:

public partial class App : Application
{
    public static event EventHandler SettingsSaved;

    private async void Application_Launching(object sender, LaunchingEventArgs e)
    {
        //this await will cause the thread to jump to MainPage to subscribe to SettingsSaved event.
        await Task.Delay(500);

        if (SettingsSaved != null)
        {
            SettingsSaved(this, null);
        }
 }

当然,如果有人可以提出一个更优雅的解决方案,我会非常感激,在继续使用App.xaml.cs中的代码之前,可以先初始化MainPage