c#之委托(解決線程間操作無效)


之前剛接觸winform這東西的時候,需要實現一個數據回顯的功能,也就是將執行結果顯示在控件上。當時涉及到了多線程的場景,所以,我最初的設想就是線程得到執行結果后,直接調用控件添加一個Item,雖然我是這么想的,但是人家編程語言顯然不是這么想的,當場告訴我線程間操作無效,它無效,我笑了... ...

當時果斷選擇求助於搜索引擎,在一番cv操作之后,功能實現了,今天恰好時間充裕,決定將c#好好重新捋一遍,當時為了盡快完成工作,心浮氣躁,草草看了些文檔就開始搞起來,如今回想起那個數據回顯的功能,用到的技術就是c#中的委托。簡單來說,就是既然不允許直接調用某個方法,那么,就使用委托來調用該方法,下面簡單記錄一下我對這個技術的理解。


 

委托

作用:

就是引用某個方法,我們可以通過委托來調用某個方法。

使用步驟:

  1. 聲明
  2. 實例化
  3. 使用

關鍵字:

delegate
 
示例如下:
class Program
    {
    //聲明委托,委托的形參列表和返回值類型必須與所要調用的方法一致
public delegate byte[] dele (int i); static void Main(string[] args) {
       //實例化委托,實例化的參數為該委托調用的方法 dele de
= new dele(IntForMatter.IntToByte);
       //使用委托調用方法
byte[] res = de(85596); foreach (byte r in res) { Console.WriteLine(r); } } }

用於測試委托的代碼:

class IntForMatter 
    {
        public static byte[] IntToByte (int parm) 
        {
            byte[] res = new byte[4];
            for (int i = 0; i < 4; i++) 
            {
                res[i] = (byte)(parm >> (i * 8) & 0xff);
            }
            return res;
        }
    }

(請忽略代碼中不規范的命名方式... ...)

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM