我使用的是Here的闪屏。我喜欢它的简单性。但它的问题是,闪屏不会消失,直到我点击它。在IDE中运行时,它工作得很好。有什么想法吗?我会在这里附加代码,但由于某些原因它不能正确插入。
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();
}发布于 2009-06-01 22:29:33
首先,使用Thread.Abort在该页面上创建闪屏的方式并不是正确的做法。
切勿调用Thread.Abort,除非您正在关闭线程所在的AppDomain。
为了强调这一点,让我重申一下。您唯一应该调用 的时间是当您对 有足够的了解,并且知道它永远不应该调用它时它的行为。
看看StackOverflow上的另一个问题:Multi-Threaded splash screen in c#?。
如果您希望保留现有的解决方案,一种可能更好的方法是将计时器放入初始屏幕窗体中,将其计时器设置为您希望初始屏幕停留在屏幕上的时间,然后在其Tick事件处理程序中调用Close。
在同一地点,我会简单地启动原来的线程,并删除其他行。
换句话说,从该页面的第一个代码块开始,我将保留这两行代码:
Thread th = new Thread(new ThreadStart(DoSplash));
th.Start();再加上窗体上使窗体自动关闭的计时器,就比尝试使用Thread.Abort要好得多。
你不应该给它打电话。
https://stackoverflow.com/questions/937102
复制相似问题