目前我的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与第一次启动应用程序时的工作方式相同?
我是一名新手编码员,我很确定我在这里缺少一些非常基本的东西。
答案 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