C#向線程中傳遞多個參數的解決方案(兩種)_C#教程

來源:互聯網
上載者:User

問題:

對於多線程編程,很多時候往往需要向線程中傳遞多個參數,而C#中的線程只接收1個object類型的參數(如下):

Thread t = new Thread(new ParameterizedThreadStart(newthread));t.start(參數);void newthread(object){.............}

而現在需要往線程中傳遞多個參數,比如method方法想用單獨的線程來跑

void method(int begin,int end){..................}

解決辦法1:建立一個跑方法的類

class myclass{private int begin;public int begin{set{this.begin=value;}}private int end;public int end{set{this.end=value;}}public run(){method(begin,end);}private method(int begin,int end){...............}}

然後建立一個該類執行個體,賦值之後就可以跑了,代碼如下;

myclass c = new myclass();c.begin=100;c.end=10000;Thread t = new Thread(new Threadstart(c.run))t.start();

2、解決方案2:將數組或集合執行個體作為參數傳入

目前正在做一個多線程的軟體,用到了這部分,感覺每次都要建立類,比較麻煩,查了網上主流都是解決方案1中的方法,後來自己琢磨出另一個方法,就是儘管新的線程只能傳1個參數進去,但是我們可以傳一個集合或者數組類的參數進去,這樣就可以解決一次向新線程中傳遞多個參數的問題了。

同樣,對於上面的method的方法,需要傳遞2個int類型的整數,首先添加一個method方法的重載

void method(object o){//此處對傳進來的參數進行處理int[] p = (int[])o;//調用原來的method方法method(p[0],p[1]);}

再將要傳遞的參數用數組或集合方式儲存起來

int para[]=new int[2]{100,10000};

最後建立線程進行調用

THread t = new Thread(new ParameterizedThreadStart(method))t.start(para);

這樣就可以達到將2個參數傳遞入線程的目的了。

傳遞的參數類型也可以用List<>或其他集合,傳遞進去的這些參數的類型都是相同的,對於不同的類型,可以考慮採用List<object>或者object[] 的方式傳進去,在重載的方法中再對參數進行處理即可。

以上所述是小編給大家介紹的C#向線程中傳遞多個參數的解決方案(兩種) ,希望對大家有所協助,如果大家有任何疑問請給我留言,小編會及時回複大家的。在此也非常感謝大家對雲棲社區網站的支援!

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.