C 執行緒呼叫帶引數的方法

2021-08-22 17:23:48 字數 1757 閱讀 2460

**c#執行緒呼叫帶引數的方法--2 2023年06月15日 星期五 下午 11:24

個人認為,還是為執行緒建立乙個單獨的類,在類的初始化函式裡頭為類裡頭的變數賦值,來達到傳入引數比較簡單。下面有些方法是有問題的,不過我已經達到了目的就懶得去排錯了,哪位朋友看出問題了提醒一下啊。呵呵...

方法一:在vs2003中,也不能直接訪問,參看一般來說,直接在子執行緒中對窗體上的控制項操作是會出現異常,這是由於子執行緒和執行窗體的執行緒是不同的空間,因此想要在子執行緒來操作窗體上的控制項,是不可能 簡單的通過控制項物件名來操作,但不是說不能進行操作,微軟提供了invoke的方法,其作用就是讓子執行緒告訴窗體執行緒來完成相應的控制項操作。 現在用乙個用執行緒控制的程序條來說明,大致的步驟如下:

1.建立invoke函式,大致如下:

///

/// delegate function be invoked by main thread

///

private void invokefun()

if(prgbar.value< 100)

prgbar.value = prgbar.value + 1;

}

2.子執行緒入口函式:

///

/// thread function inte***ce

/// private void threadfun() }

3.建立子執行緒:

thread thdprocess = new thread(new threadstart(threadfun));

thdprocess.start();

備註:using system.threading;

private system.windows.forms.progressbar prgbar;

方法二:加入該句:

control.checkforillegalcrossthreadcalls = false 取消線執行緒安全保護模式!

方法三:帶引數使用類、類的方法或類的屬性都可以向執行緒傳遞引數:

public class url**********

public void download() }

[... 在另乙個類中使用它們...]

url********** ********** = new url********** (yoururl);

new thread (new threadstart (**********.download)).start();

注意引數是如何傳遞的。

方法四:帶引數

threadstart starter = delegate ;

new thread(starter).start();

//使用執行緒池

waitcallback callback =

delegate (object state) ;

threadpool.queueuserworkitem (callback, yoururl);

方法五:帶引數

thread t = new thread (new parameterizedthreadstart(downloadurl));

t.start (myurl);

static void downloadurl(object url)

C 執行緒呼叫帶引數的方法

在 net framework 2.0 版中,要實現執行緒呼叫帶引數的方法有兩種辦法。第一種 使用parameterizedthreadstart。呼叫 system.threading.thread.start system.object 過載方法時將包含資料的物件傳遞給執行緒。使用 parame...

c 多執行緒 呼叫帶引數函式

執行緒操作主要用到thread類,他是定義在system.threading.dll下。使用時需要新增這乙個引用。該類提供給我們四個過載的建構函式 以下引自msdn thread threadstart 初始化 thread 類的新例項。由 net compact framework 支援。thre...

c 多執行緒 呼叫帶引數函式

執行緒操作主要用到thread類,他是定義在system.threading.dll下。使用時需要新增這乙個引用。該類提供給我們四個過載的建構函式 以下引自msdn thread threadstart 初始化 thread 類的新例項。由 net compact framework 支援。thre...