我們經常會在Form的Loading事件中做很多事情(例如,載入字典資料等),但我們發現這回消耗大量的時間,而且會因為無法預估完成的時間,我們的第一個介面都被鎖住直到Loading被完成為止.為使用者帶來最好的使用體驗,我們應該加入一個Flash Form.但看過很多程式員的程式,Flash Form仍然是被線程鎖住的。在這篇文章我提出我的實現,我使用的是:
Application.Idle 事件,當應用程式完成處理並即將進入空閑狀態時發生.
以下是我的參考實現。
//定義程式的上下文
private static ApplicationContext context;
//定義Flash表單
private static FlashForm flashForm;
/// <summary>
/// 應用程式的主進入點。
/// </summary>
[STAThread]
static void Main()
{
…
context = new ApplicationContext();
flashForm = new FlashForm();
//綁定Idle事件處理,程式閑時事件,在這裡用作FlashForm展示完成後運行程式碼片段.
Application.Idle += new EventHandler(Application_Idle);
flashForm.Show();
Application.Run(context);
}
static void Application_Idle(object sender, EventArgs e)
{
//清除Idle事件處理綁定
Application.Idle -= new EventHandler(Application_Idle);
//建立主表單
Form1 form = new Form1();
context.MainForm = form;
Application.DoEvents();
//顯示主表單
context.MainForm.Show();
Application.DoEvents();
//關閉Flash表單
flashForm.Close();
}
現在你要做的就是美化你的Flash Form了。