首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >不会消失的闪屏

不会消失的闪屏
EN

Stack Overflow用户
提问于 2009-06-01 22:21:39
回答 3查看 2K关注 0票数 0

我使用的是Here的闪屏。我喜欢它的简单性。但它的问题是,闪屏不会消失,直到我点击它。在IDE中运行时,它工作得很好。有什么想法吗?我会在这里附加代码,但由于某些原因它不能正确插入。

代码语言:javascript
运行
复制
private System.Windows.Forms.Timer timer1;
//private Splash sp=null;

public Form1()
{
    InitializeComponent();

    Thread th = new Thread(new ThreadStart(DoSplash));
    //th.ApartmentState = ApartmentState.STA;
    //th.IsBackground=true;
    th.Start();
    Thread.Sleep(3000);
    th.Abort();
    Thread.Sleep(1000);
}

private void DoSplash()
{
    Splash sp = new Splash();
    sp.ShowDialog();
}

private void timer1_Tick(object sender, System.EventArgs e)
{
//      sp.Close();
}
EN

Stack Overflow用户

回答已采纳

发布于 2009-06-01 22:29:33

首先,使用Thread.Abort在该页面上创建闪屏的方式并不是正确的做法。

切勿调用Thread.Abort,除非您正在关闭线程所在的AppDomain

为了强调这一点,让我重申一下。您唯一应该调用 的时间是当您对 有足够的了解,并且知道它永远不应该调用它时它的行为。

看看StackOverflow上的另一个问题:Multi-Threaded splash screen in c#?

如果您希望保留现有的解决方案,一种可能更好的方法是将计时器放入初始屏幕窗体中,将其计时器设置为您希望初始屏幕停留在屏幕上的时间,然后在其Tick事件处理程序中调用Close

在同一地点,我会简单地启动原来的线程,并删除其他行。

换句话说,从该页面的第一个代码块开始,我将保留这两行代码:

代码语言:javascript
运行
复制
Thread th = new Thread(new ThreadStart(DoSplash));
th.Start();

再加上窗体上使窗体自动关闭的计时器,就比尝试使用Thread.Abort要好得多。

你不应该给它打电话。

票数 6
EN
查看全部 3 条回答
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/937102

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档