C 委託非同步呼叫

2022-09-15 17:42:13 字數 1266 閱讀 7116

廢話不多說,直接上**(ps:我就喜歡簡單、直接、粗暴)

using system;

using system.collections.generic;

using system.linq;

using system.runtime.remoting.messaging;

using system.text;

using system.threading;

using system.threading.tasks;

namespace 非同步呼叫委託

", s);

#endregion

#region 直接通過呼叫非同步委拖獲取返回值,會阻塞主線程

// 開始執行非同步呼叫,使用了執行緒池,為執行緒

//iasyncresult res = md.begininvoke(1,30,null,"test");

//// 在這裡可以進行其它操作

"在這裡可以進行其它操作的哦~");

//// 這種方式獲取返回值會中斷主線程的執行

//int s = md.endinvoke(res);

"sum is: ", s);

#endregion

#region 通過**函式實現非同步委託返回值,不阻塞主線程

iasyncresult res = md.begininvoke(1, 30, callback, "test");

#endregion

//子執行緒你慢慢玩,我一邊等你,一邊做點事,你做玩完就一起回家

int i = 0;

while (!res.iscompleted)

console.readkey();

}// 實際的計算方法 - 假設非常耗時

private static int sum(int fromnum, int tonum)

return sum;

}// **函式,即當執行緒非同步結束以後呼叫此方法

private static void callback(iasyncresult ar)

", ar.asyncstate); //獲得並輸出非同步呼叫的結果

int s = ((mydelegate)ar.asyncdelegate).endinvoke(ar);

console.writeline("sum is: ", s);}}

// 宣告委託

public delegate int mydelegate(int fromnum, int tonum);

}

C 委託的非同步呼叫

本文將主要通過 同步呼叫 非同步呼叫 非同步 三個示例來講解在用委託執行同乙個 加法類 的時候的的區別和利弊。首先,通過 定義乙個委託和下面三個示例將要呼叫的方法 新增的命名空間 using system.threading using system.runtime.remoting.messagi...

C 委託的同步呼叫和非同步呼叫

委託的invoke方法用來進行同步呼叫。同步呼叫也可以叫阻塞呼叫,它將阻塞當前執行緒,然後執行呼叫,呼叫完畢後再繼續向下進行。同步呼叫的例子 using system using system.threading public delegate int addhandler int a,int b ...

C 委託的同步呼叫和非同步呼叫

委託的invoke方法用來進行同步呼叫。同步呼叫也可以叫阻塞呼叫,它將阻塞當前執行緒,然後執行呼叫,呼叫完畢後再繼續向下進行。同步呼叫的例子 using system using system.threading public delegate int addhandler int a,int b ...