Không có gì để đạt được từ việc sinh ra một chuỗi nếu mục tiêu của bạn là để có được màn hình giật gân càng nhanh càng tốt.
Có một số cách để làm màn hình giật gân, và một phức tạp hơn được đề cập here, nhưng đây là một phương pháp dễ dàng Tôi đã sử dụng với thành công trọn vẹn:
Chỉ cần đảm bảo bạn nạp và hiển thị các hình thức giật gân đầu tiên và sau đó tiếp tục tải ứng dụng của bạn trong khi người dùng đang xem màn hình đẹp. Khi mainform được thực hiện tải, nó có thể đóng giật gân ngay trước khi nó cho thấy chính nó (một cách đơn giản để làm điều này là thông qua các hình thức giật gân đến mainform trong constructor của nó):
static void Main()
{
Application.SetCompatibleTextRenderingDefault(false);
SplashForm splash = new SplashForm();
splash.Show();
splash.Refresh(); // make sure the splash draws itself properly
Application.EnableVisualStyles();
Application.Run(new MainForm(splash));
}
public partial class MainForm : Form
{
SplashForm _splash;
public MainForm(SplashForm splash)
{
_splash = splash;
InitializeComponent();
}
protected override void OnLoad(EventArgs e)
{
base.OnLoad(e);
// or do all expensive loading here (or in the constructor if you prefer)
_splash.Close();
}
}
Alternative: Nếu bạn không thích để vượt qua giật gân cho MainForm (có thể có vẻ như không thanh nha), sau đó đăng ký sự kiện Load của MainForm, và đóng màn hình splash có:
static class Program
{
static SplashForm _splash;
[STAThread]
static void Main()
{
Application.SetCompatibleTextRenderingDefault(false);
_splash = new SplashForm();
_splash.Show();
_splash.Refresh();
Application.EnableVisualStyles();
MainForm mainForm = new MainForm();
mainForm.Load += new EventHandler(mainForm_Load);
Application.Run(mainForm);
}
static void mainForm_Load(object sender, EventArgs e)
{
_splash.Dispose();
}
}
Như đã đề cập trong this thread, nhược điểm tiềm năng để giải pháp này là người dùng sẽ không thể tương tác với màn hình giật gân. Tuy nhiên, điều đó thường không cần thiết.
Nguồn
2010-03-25 17:54:35
Đó là một cách tiếp cận thú vị. Bạn có thể mở rộng về cách thực sự tạo một Chủ đề STA không. – AngryHacker
Sinh sản sợi chỉ hoạt động không hiệu quả. Mục đích là để giảm thiểu thời gian cần thiết cho màn hình hiển thị, vì vậy tại sao làm chậm nó xuống bằng cách chia sẻ chu kỳ của nó với phần còn lại của quá trình tải ứng dụng? Tốt nhất là dành tất cả mọi thứ để hiển thị giật gân, sau đó tải phần còn lại của ứng dụng. –
@Charles: Nếu bạn hiển thị giật gân trên chủ đề chính, nó sẽ không nhận được bất kỳ tin nhắn nào và sẽ ngừng phản hồi. – SLaks