1. 程式人生 > 實用技巧 >c#之委託(解決執行緒間操作無效)

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; } }

(請忽略程式碼中不規範的命名方式... ...)