1. 程式人生 > >C Thread與委託實現定時重新整理資料功能

C Thread與委託實現定時重新整理資料功能

                     
使用者需求:定時抓取ERP系統條碼已掃描未稽核單據
  • 1

解決辦法: 由於採用Timer控制元件會消耗系統資源,故採用執行緒處理。 由於執行緒呼叫方法不支援控制元件處理模式,故採用委託方法實現。

       bool bStop;        public DataTable dt = new DataTable();        public ScanedNotChecked_Frm()        {            InitializeComponent();        }        private void ScanedNotChecked_Frm_Load(object
sender, EventArgs e)        {           //定義執行緒               Thread LogThread = new Thread(new ThreadStart(DoService));            //設定執行緒為後臺執行緒,那樣程序裡就不會有未關閉的程式了            LogThread.IsBackground = true;            bStop = true;            if (bStop == true)            {                Control.PageControl.CheckForIllegalCrossThreadCalls = false
;                LogThread.Start();//起執行緒            }                        }        private string  GetList()         {            SqlParameter[] parms = new SqlParameter[0];            DBCon db = new DBCon("ZM");            gdScanedNotChecked.DataSource = SqlHelper.ExecuteDataset(db.StringConnection(), CommandType.StoredProcedure, "DZ_ScanedNotChecked"
, parms).Tables[0];            return "過載";        }        int i = 0;        private void DoService()        {            while (true)            {                bStop = false;                //別的執行緒裡的呼叫哇~                i++;                lblMessage.Text = "第" + i.ToString() + "次" + returnList(returnMylist) + "資料";                System.Threading.Thread.Sleep(1000*60*5);            }        }        private delegate string returnStrDelegate();        //搞個最簡單滴取值滴方法~        private string returnMylist()        {            return GetList();        }        //判斷一下是不是該用Invoke滴~,不是就直接返回~        private string returnList(returnStrDelegate myDelegate)        {            if (this.InvokeRequired)            {                return (string)this.Invoke(myDelegate);            }            else            {                return myDelegate();            }        }
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32
  • 33
  • 34
  • 35
  • 36
  • 37
  • 38
  • 39
  • 40
  • 41
  • 42
  • 43
  • 44
  • 45
  • 46
  • 47
  • 48
  • 49
  • 50
  • 51
  • 52
  • 53
  • 54
  • 55
  • 56
  • 57
  • 58
  • 59
  • 60

這裡寫圖片描述