C# 如何在单独的线程上运行计时器
我需要做一个带有进度条的启动屏幕。我的问题是无法将主窗体与启动屏幕链接:C# 如何在单独的线程上运行计时器,c#,C#,我需要做一个带有进度条的启动屏幕。我的问题是无法将主窗体与启动屏幕链接: public LogIn_Form() { Thread t = new Thread(new ThreadStart(SplashStart)); t.Start(); Thread.Sleep(5000); InitializeComponent(); t.Abort(); } public void SplashStart() { Application.Run(ne
public LogIn_Form() {
Thread t = new Thread(new ThreadStart(SplashStart));
t.Start();
Thread.Sleep(5000);
InitializeComponent();
t.Abort();
}
public void SplashStart() {
Application.Run(new Form1());
}
在“Application.Run(new Form1());”中,它在Form1下给了我一个错误
这是启动屏幕窗体:
public SplashScreen_Form() {
InitializeComponent();
timer.Start();
}
private void timer_Tick(object sender, EventArgs e) {
this.Opacity += 0.07;
pbrLoad.Increment(1);
if (pbrLoad.Value == 100)
timer.Stop();
}
private void SplashScreen_Form_Load(object sender, EventArgs e) {
this.Opacity = 0;
timer.Enabled = true;
}
现在我需要保持这样,但没有错误。您遇到了什么错误?使用
Thread.Abort()
是一件非常糟糕的事情。整个设计非常奇怪,我建议使用一个自定义启动启动屏幕和主窗体,而不是单独启动每个启动屏幕和主窗体,并且根本不创建任何额外的线程。UI存在于一个线程中,您不应该尝试从另一个线程与它交互。您也不应该使用Thread.Abort()
。您能为我发布一个代码示例吗?