日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

向线程传递数据与线程用回调方法检索数据

發布時間:2025/4/5 编程问答 34 豆豆
生活随笔 收集整理的這篇文章主要介紹了 向线程传递数据与线程用回调方法检索数据 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
用回調方法檢索數據
/**//*用回調方法檢索數據
下面的示例演示了一個從線程中檢索數據的回調方法。包含數據和線程方法的類的構造函數也接受代表回調方法的委托;
在線程方法結束前,它調用該回調委托。
*/

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}.",?42,?new?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(
"線程執行結束");??
????}

}

轉載于:https://www.cnblogs.com/hanguoji/archive/2007/02/27/657947.html

總結

以上是生活随笔為你收集整理的向线程传递数据与线程用回调方法检索数据的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。