gpt4 book ai didi

c# - 超时关闭在控制台中无法关闭启动画面

转载 作者:行者123 更新时间:2023-11-30 15:13:56 26 4
gpt4 key购买 nike

我做了一个类,我做了一个实例。在上述实例中,我有这些代码行来显示和关闭启动画面。

// Open (show)
public void ShowSplashScreen(bool autoClose = false)
{
splashscreen.Show(autoClose, true);
}

// Close (don't show)
public void CloseSplashScreen()
{
splashscreen.Close(TimeSpan.FromSeconds(0.3));
}

它显示正常,但从不关闭,只是停留在那里。

这是闪屏关闭的文档:https://learn.microsoft.com/en-us/dotnet/api/system.windows.splashscreen.close?view=netframework-4.8

[System.Security.SecurityCritical]

public void Close (TimeSpan fadeoutDuration);

注意:我正在使用 show 方法,参数 AutoClose 设置为 falseTopMost 设置为 true,这使得它不会自动关闭,因为我想以编程方式关闭它并且不订阅现有事件。


我正在运行来自控制台(.NET 框架)应用程序的代码行以进行测试,然后再将其完全实现到我的 UI 中。


我尝试过的:在调用 close 之前调试甚至尝试再次调用 show


这肯定是类出了问题,因为调用类并直接操作属性有效:

ClassSplashScreen rss = new ClassSplashScreen();
rss.splashscreen.Show(false);
rss.splashscreen.Close(TimeSpan.FromSeconds(1));

我最好的猜测是有什么东西挂起了 UI 并卡住了它?但我不确定该怎么做。


运行代码来测试这个

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows;

namespace NamespaceName
{
public class StackOverFlowCode
{
static void Main(string[] args)
{
ClassSplashScreen screen = new ClassSplashScreen();
screen.ShowSplashScreen();
screen.CloseSplashScreen();
}

}
public class ClassSplashScreen
{
public SplashScreen splashscreen { get; set; }
public ClassSplashScreen()
{
splashscreen = new SplashScreen("Resource Image Link");
}
public void ChangeSplashResource(SplashScreen resource)
{
splashscreen = resource;
}
public void ShowSplashScreen(bool autoClose = false)
{
splashscreen.Show(autoClose, true);
}
public void CloseSplashScreen()
{
splashscreen.Close(TimeSpan.FromSeconds(1));
}
}
}

最佳答案

SplashScreen 依赖于调度程序,但默认情况下在控制台应用程序中没有调度程序。如果您创建一个 System.Windows.Application,它应该按预期工作:

public class StackOverFlowCode
{
[STAThread]
static void Main(string[] args)
{
Application app = new Application();
app.Startup += (s, e) =>
{
ClassSplashScreen screen = new ClassSplashScreen();
screen.ShowSplashScreen();
screen.CloseSplashScreen();
};
app.Run();
}
}

public class ClassSplashScreen
{
private readonly SplashScreen splashscreen;

public ClassSplashScreen() => splashscreen = new SplashScreen("Resource Image Link");

public void ShowSplashScreen() => splashscreen.Show(false);

public void CloseSplashScreen() => splashscreen.Close(TimeSpan.FromSeconds(1));
}

关于c# - 超时关闭在控制台中无法关闭启动画面,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56768058/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com