0

SplashScreenService を起動して実行しようとしています。スプラッシュスクリーンは表示されますが、閉じません。

app.xaml.cs に次のコードがあります。

protected override void OnStartup(StartupEventArgs e)

{

ServiceLocator.Default.RegisterTypeIfNotYetRegistered<ISplashScreenService, SplashScreenService>();

var splashScreenService = ServiceLocator.Default.ResolveType<ISplashScreenService>();
            splashScreenService.Enqueue(new ActionTask("Task1", tracker => Thread.Sleep(2000)));

splashScreenService.Commit<SplashScreenViewModel>();

base.OnStartup(e);

}

私が間違っていることを誰かが助けてくれますか?

4

1 に答える 1

1

UI スレッドをブロックしているようです。次の方法で試してください。

public partial class App
{
    #region Methods

    protected override void OnStartup(StartupEventArgs e)
    {
        base.OnStartup(e);
        var splashScreenService = ServiceLocator.Default.ResolveType<ISplashScreenService>();
        splashScreenService.Enqueue(new ActionTask("Task1", tracker => Thread.Sleep(2000)));
        splashScreenService.Enqueue(new ActionTask("Task2", tracker => Thread.Sleep(2000)));
        splashScreenService.Enqueue(new ActionTask("Task3", tracker => Thread.Sleep(2000)));
        splashScreenService.CommitAsync();
    }

    #endregion
}

またはカスタム スプラッシュ スクリーン用

public partial class App
{
    #region Methods

    protected override void OnStartup(StartupEventArgs e)
    {
        base.OnStartup(e);
        var splashScreenService = ServiceLocator.Default.ResolveType<ISplashScreenService>();
        splashScreenService.Enqueue(new ActionTask("Task1", tracker => Thread.Sleep(2000)));
        splashScreenService.Enqueue(new ActionTask("Task2", tracker => Thread.Sleep(2000)));
        splashScreenService.Enqueue(new ActionTask("Task3", tracker => Thread.Sleep(2000)));
        splashScreenService.CommitAsync<SplashScreenViewModel>();
    }

    #endregion
}
于 2013-10-29T14:09:14.920 に答える