用回調方法檢索數據
          下面的示例演示了一個從線程中檢索數據的回調方法。包含數據和線程方法的類的構造函數也接受代表回調方法的委托;
          在線程方法結束前,它調用該回調委托。
          */
          using System;
          using System.Threading;

          //被實例化的類,用于傳遞參數進行操作
          public class ThreadWithState 
          {
              
          private string boilerplate;
              
          private int value;
              
          //定義一個回調函數
              private ExampleCallback callback;

              
          //接收線程傳遞的參數
              public ThreadWithState(string text, int number, ExampleCallback callbackDelegate) 
              
          {
                  boilerplate 
          = text;
                  value 
          = number;
                  callback 
          = callbackDelegate;
              }


              
          public void ThreadProc() 
              
          {
                  Console.WriteLine(boilerplate, value);
                  
          //判斷是否執行回調函數、并把參數傳遞給回調函數
                  if (callback != null)
                      callback(
          1);
              }

          }


          //聲明一個回調函數:注意傳遞的參數要與Example類中的函數參數類型一致
          public delegate void ExampleCallback(int lineCount);

          //事例主類
          public class Example 
          {
              
          public static void Main() 
              
          {
                  
          //實例化ThreadWithState,并傳遞參數,注意:new ExampleCallback(ResultCallback)的命名空間引用,及其傳遞的參數(ResultCallback函數)
                  ThreadWithState tws = new ThreadWithState("This number {0}."42new ExampleCallback(ResultCallback));

                  Thread t 
          = new Thread(new ThreadStart(tws.ThreadProc));
                  t.Start();
                  Console.WriteLine(
          "線程開始執行");
                  
          //此為判斷線程是否執行結束,但不建議阻塞線程,這樣線程就會等待完成后再進行其他操作
                  
          //可利用:t.IsAlive是否處于執行狀態來判斷線程
                  t.Join();
                  Console.WriteLine(
          "線程執行結束");  
              }


              
          //回調處理函數,應與ExampleCallback的參數類型應一致
              public static void ResultCallback(int lineCount) 
              
          {
                  Console.WriteLine(
          "printed {0} lines.", lineCount);  
              }

          }



          /*向線程傳遞數據
          ThreadStart 委托既沒有參數也沒有返回值。這意味著不可以使用需要參數的方法啟動線程,或從方法中獲得返回值。 

          為向線程傳遞數據,需要創建一個用來保持數據和線程方法的對象,如下面的兩個代碼示例所示。 
          為檢索線程方法的結果,您可以使用回調方法,如第二個代碼示例中所示。 
          */

          using System;
          using System.Threading;

          //被實例化的類,用于傳遞參數進行操作
          public class ThreadWithState 
          {
              
          private string boilerplate;
              
          private int value;

              
          public ThreadWithState(string text, int number) 
              
          {
                  boilerplate 
          = text;
                  value 
          = number;
              }

                     
              
          public void ThreadProc() 
              
          {
                  Console.WriteLine(boilerplate, value); 
              }

          }


          //創建線程調用ThreadWithState
          public class Example 
          {
              
          public static void Main() 
              
          {
                  
          //實例化類ThreadWithState,利用構造函數向線程傳遞參數
                  ThreadWithState tws = new ThreadWithState("This number {0}."42);
                  
          //創建線程并執行ThreadWithState類中的ThreadProc函數
                  Thread t = new Thread(new ThreadStart(tws.ThreadProc));
                  t.Start();
                  Console.WriteLine(
          "線程開始執行");
                  
          //此為判斷線程是否執行結束,但不建議阻塞線程,這樣線程就會等待完成后再進行其他操作
                  
          //可利用:t.IsAlive是否處于執行狀態來判斷線程
                  t.Join();
                  Console.WriteLine(
          "線程執行結束");  
              }

          }

          文章來源:http://www.cnblogs.com/wangdetian168/archive/2008/12/21/1359255.html
          posted on 2010-10-11 09:28 sanmao 閱讀(281) 評論(0)  編輯  收藏

          只有注冊用戶登錄后才能發表評論。


          網站導航:
           

          常用鏈接

          留言簿(5)

          隨筆分類

          隨筆檔案

          搜索

          •  

          最新評論

          閱讀排行榜

          評論排行榜

          主站蜘蛛池模板: 衡东县| 阿拉尔市| 澄城县| 罗平县| 青浦区| 邢台县| 磐石市| 武邑县| 高青县| 龙川县| 富裕县| 武鸣县| 油尖旺区| 枣庄市| 汨罗市| 蒲江县| 乌拉特前旗| 万年县| 屯昌县| 宜阳县| 登封市| 连城县| 临颍县| 鄂伦春自治旗| 永顺县| 商河县| 屏边| 平昌县| 宜城市| 黄大仙区| 兴义市| 沐川县| 潜山县| 大名县| 美姑县| 南皮县| 东平县| 徐闻县| 简阳市| 剑阁县| 琼中|