Form 第一次開啟很慢的處理方式

  • 3277
  • 0
  • 2012-02-01

摘要:Form 第一次開啟很慢的處理方式

如果一個Form 上面有許多物件的話, 當這個畫面第一次被程式叫起來的時候, 要花很多時間 , 如果可以再背景先偷跑過一次, 再調用的時候就不會有這個很慢的問題


using System;
using System.Drawing;
using System.Windows.Forms;
using System.Threading;

namespace WindowsFormsApplication6
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
        }

        // 預先載入的程序        
        class work
        {
            [STAThread]
            public static void DoMoreWork()
            {
                Form2 f = new Form2();
                f.Size = new Size(-1, -1);
                f.FormBorderStyle = FormBorderStyle.None;
                f.Visible = false;
                f.Show();
                f.Close();
            }
        }
        // 透過這種方式把Form2 先呼叫一次 
        private void simpleButton1_Click(object sender, EventArgs e)
        {
            Thread oth = new Thread(new ThreadStart(work.DoMoreWork));
            oth.Start();
        }

        private void simpleButton2_Click(object sender, EventArgs e)
        {
            Form2 f = new Form2();
            f.Show();          
        }
    }
}

實作上如果將資料讀取和畫面產生用不同的THREAD 處理的話, 可以更快的產生畫面, 但是作法需要搭配 Thread 傳參數和回呼, 不然Binding Data的時候會遇到跨Thread 不能作業的問題

http://www.dotblogs.com.tw/fang1004tw/archive/2012/01/31/67111.aspx