那我們該怎么辦?答案就在委托 的BeginInvoke() 方法上, BeginInvoke() 也是(異步)啟動一個新線程.例如MyDelegate dele = new MyDelegate (MyFunction);dele.BeginInvoke(10,"abcd");void MyFunction(int count...
提起多線程,不得不提起 委托(delegates)這個概念.
我理解的委托就是 具有 同樣參數和返回值 的函數的集合.
比如
public delegate void MyDelegate(int arg);
就是這種形式的函數 void Myfuntion(int i); 的集合.
如何將一個函數加入 委托 的集合?
MyDelegate dele = new MyDelegate(Myfuntion1);
再增加一個
dele += new MyDelegate(Myfuntion2);
...
委托函數 dele 就是 具有整數參數和空返回值的函數 Myfuntion1,2的集合.
調用這個委托函數
dele(1);
就是逐個調用 Myfuntion1,2,...
一般線程函數的聲明和啟動
Thread t = new Thread(new ThreadStart(MyFunction));
t.Start();
正是調用了沒有參數和返回值的 委托函數 ThreadStart
其中的參數MyFunction 是 這個委托函數中的一員.
很明顯 這樣無法傳參數和返回值,那我們該怎么辦?
答案就在委托 的BeginInvoke() 方法上, BeginInvoke() 也是(異步)啟動一個新線程.
例如
MyDelegate dele = new MyDelegate (MyFunction);
dele.BeginInvoke(10,"abcd");
void MyFunction(int count, string str);
可以實現參數的傳遞.
如何收集線程函數 的 返回值?
與 BeginInvoke 對應 有個 EndInvoke 方法,而且運行完畢返回 IAsyncResult 類型的返回值.
這樣我們可以這樣收集 線程函數的 返回值
MyDelegate dele = new MyDelegate (MyFunction);
IAsyncResult ref = dele.BeginInvoke(10,"abcd");
....
int result = dele.EndInvoke(ref); < 收集 返回值
int MyFunction(int count, string str); < 帶參數和返回值的 線程函數
?石家莊網站建設的優點:我們是專屬定制,制作符合您公司業務、風格的網站,這就做到給您制作的網站是網絡上獨一無二的網站,這樣更有利于搜索引擎的收錄。如果您喜歡網絡上某個風格的網站或者網站模板,我們是只仿制而不直接套用,我們會對其中的結構和樣式做增減優化,做…
?競價排名營銷是一種通過 競價購買搜索引擎中關鍵詞或關鍵短語的廣告方式。競價排名營銷分為兩種類型。 第一種,直接為真正的搜索引擎結果的排名付費,也就是說付的錢越多,網頁所獲得的排名名也就越高。 第二種則更類似于普通的廣告。這種競價排名營銷方式通過…
?網站優化對網站來說是非常重要的,直接決定和影響著網站所起到的作用,以及在各個地方當中的排名。在進行seo優化的過程中,我們必須要堅持一定的原則,真正的把這些事情做得更好,才可以確保最終的結果,這對于我們來說是非常重要的事。 SEO優化主要分為8小步: …