如何在呼叫執行緒的時候傳遞引數

2021-06-21 23:58:47 字數 1428 閱讀 2208

如何在呼叫執行緒的時候傳遞引數

我們在寫remoting程式或者其他的一些應用程式的時候難免要和執行緒打交道,.net使我們很容易就可以建立乙個執行緒,但是它提供的建立執行緒和啟動執行緒的方法沒有明顯的提供引數,假如我們要用執行緒來啟動類裡面乙個帶引數的方法該怎麼辦?下面就簡單的介紹如何使用.net提供的豐富的框架來實現這個功能。為了可以生動詳細的介紹整個過程,我建立下面的乙個.net類,它也是要用執行緒啟動的方法的載體。類如下所示:

using system;

public void mymethod1()

}// for method 2

public myclass(){}

// this method is private,but it can be public or other

private void mymethod2(string parameter)

// because delegate waitcallback's parameter type is object

// i will convert it to string.

public void mymethod2(object parameter)

// for method 3

public string mymethod3(string parameter)

// for mutil-parameters passed

public string mymutilparameters(string param1,string param2)}}

為了測試我們的結果我建立了乙個winform的工程,其中有乙個form和4個按鈕,如果你需要所有的原始碼請傳送郵件到[email protected],如果我有時間我會給你發過去的。接下來是每種方法的詳細描述。

1、使用建構函式來傳遞引數

眾所周知,我們可以使用乙個帶引數的建構函式來構造物件,既然這樣我們可以利用建構函式先將要使用的引數值傳遞到物件裡面的內部變數上,然後再使用乙個無引數的方法來使用這個引數(假裝引數)。簡單的說就是,在類裡面宣告乙個變數專門用來儲存函式需要的引數,函式變成無參的形式。這種方法的最大問題就是破壞了封裝性,雖然我們不能直接方法這些變數但是隱患總是存在的(或者說看上去不爽都可以)。下面**片斷給出了如何使用這個方法來傳遞引數的詳細內容,這也是上面提到的4個按鈕中的乙個按鈕(button1)的click**。為了有引數可傳我在winform全域性定義了乙個如下的變數:

// this is parameter's value

private string myparameter = "parametervalue\n";

按鈕事件如下所示:

// passed parameters to thread by construct

private void button1_click(object sender, system.eventargs e)

如何在呼叫執行緒的時候傳遞引數

如何在呼叫執行緒的時候傳遞引數 我們在寫remoting程式或者其他的一些應用程式的時候難免要和執行緒打交道,net使我們很容易就可以建立乙個執行緒,但是它提供的建立執行緒和啟動執行緒的方法沒有明顯的提供引數,假如我們要用執行緒來啟動類裡面乙個帶引數的方法該怎麼辦?下面就簡單的介紹如何使用.net提...

執行緒的引數傳遞

執行緒大家都聽說過,也或多或少的看到過或使用過。但對於執行緒中的引數傳遞可能會比較陌生,今天我在這就跟大家分享下執行緒的傳遞方法。在分享執行緒的引數傳遞方法之前我們先來看看不帶參的執行緒 using system.threading 在使用執行緒前別忘記了加上命名空間 public class th...

c 呼叫c 使用指標傳遞的時候

上面這篇文章很好解釋了。簡單記錄一下 1.宣告 注意 dll 一定要放到bin 目錄底下,否則會提示找不到。如果使用了指標要使用 unsafe 關鍵字,宣告乙個dll 開放的函式 函式名 引數要保持一直。dllimport dll test.dll callingconvention calling...