1. 程式人生 > 其它 >C# Delegate(委託)與多執行緒

C# Delegate(委託)與多執行緒

實現功能:在窗體中更新listview資料。

1、定義委託

private delegate void FlushClient(ListViewItem lvi,int j); //代理 引數與方法中一致

2、定義方法

FlushClient fc = new FlushClient(tick);//建立物件,注意括號內是方法,呼叫後重新整理
        private void tick(ListViewItem lvi,int j)
        {

            if (listView2.InvokeRequired)
            {
                FlushClient fc 
= new FlushClient(tick); listView2.Invoke(fc, new object[] { lvi,j }); //通過代理呼叫重新整理方法 } else { listView2.Items.Add(lvi); } }

定義一個定時器去工作

        private void SleepT()
        {
            while
(blFlag) { Thread.Sleep(1); ts3 = new TimeSpan(DateTime.Now.Ticks); if (ts3.Subtract(ts2).Ticks >= 10 * 1000 * 1000) { ListViewItem lvi = new ListViewItem(); ts2 = new TimeSpan(ts2.Ticks + 10
* 1000 * 1000); lvi.Text = j.ToString(); lvi.SubItems.Add((ts3.Subtract(ts2).Ticks * 0.0000001).ToString()); j++; tick(lvi,j); } }

 3、定義新執行緒

td.IsBackground = true;//很關鍵,加上這一句就可以在結束程式時關掉執行緒了

        private void button1_Click(object sender, EventArgs e)
        {
            ts2 = new TimeSpan(DateTime.Now.Ticks);
            Thread td = new Thread(SleepT);
            td.IsBackground = true;
            td.Start();
        }

 

搜尋

複製