国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 編程 > C# > 正文

C#中的多線程多參數傳遞詳解

2020-01-24 02:50:50
字體:
來源:轉載
供稿:網友

之前做了一個小的應用程序,用的是c#語言,涉及到了多線程的多參數傳遞,經過查找資料總結了一下解決方案!

第一種解決方案的原理是:將線程執行的方法和參數都封裝到一個類里面。通過實例化該類,方法就可以調用屬性來實現間接的類型安全地傳遞多個參數。看如下代碼:

復制代碼 代碼如下:

using System;
using System.Threading;

//ThreadWithState 類里包含了將要執行的任務以及執行任務的方法
public class ThreadWithState {
//要用到的屬性,也就是我們要傳遞的參數
private string boilerplate;
private int value;

//包含參數的構造函數
public ThreadWithState(string text, int number)
{
boilerplate = text;
value = number;
}

//要丟給線程執行的方法,本處無返回類型就是為了能讓ThreadStart來調用
public void ThreadProc()
{
//這里就是要執行的任務,本處只顯示一下傳入的參數
Console.WriteLine(boilerplate, value);
}
}


----------分隔線-----------
復制代碼 代碼如下:

//用來調用上面方法的類,是本例執行的入口
public class Example {
public static void Main()
{
//實例化ThreadWithState類,為線程提供參數
ThreadWithState tws = new ThreadWithState(
“This report displays the number {0}.”, 42);

// 創建執行任務的線程,并執行
Thread t = new Thread(new ThreadStart(tws.ThreadProc));
t.Start();
Console.WriteLine(“Main thread does some work, then waits.”);
t.Join();
Console.WriteLine(
“Independent task has completed; main thread ends.”);
}
}


從上面的例子就能很清楚的得到我們想要的結果,注意這句代碼的用法:
Thread t = new Thread(new ThreadStart(tws.ThreadProc));

第二種解決方案的原理是把多個參數封裝成object來傳遞,然后在線程里使用時拆箱即可,看如下代碼:

復制代碼 代碼如下:

ParameterizedThreadStart ParStart = new ParameterizedThreadStart(ThreadMethod);
Thread myThread = new Thread(ParStart);
object o = “hello”;
myThread.Start(o);

ThreadMethod如下:
public void ThreadMethod(object ParObject)
{
//程序代碼
}

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 集贤县| 成都市| 高要市| 瓦房店市| 辰溪县| 旬阳县| 松桃| 孟津县| 文安县| 许昌市| 师宗县| 两当县| 潮州市| 鄄城县| 万盛区| 景泰县| 福鼎市| 白城市| 定安县| 通道| 绥德县| 黄山市| 大宁县| 荃湾区| 和平县| 阳原县| 梁山县| 内丘县| 雷波县| 樟树市| 江山市| 达州市| 汝城县| 通渭县| 涟源市| 永城市| 衢州市| 尼勒克县| 湟源县| 洪泽县| 宝兴县|