vs2005 中的多執行緒 c ,可帶引數

2021-04-13 09:05:59 字數 1566 閱讀 1248

方法一:

在vs2003中,也不能直接訪問,參看  

一般來說,直接在子執行緒中對窗體上的控制項操作是會出現異常,這是由於子執行緒和執行窗體的執行緒是不同的空間,因此想要在子執行緒來操作窗體上的控制項,是不可能簡單的通過控制項物件名來操作,但不是說不能進行操作,微軟提供了invoke的方法,其作用就是讓子執行緒告訴窗體執行緒來完成相應的控制項操作。  

現在用乙個用執行緒控制的程序條來說明,大致的步驟如下:  

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

///

/// delegate function be invoked by main thread  

///

private     void     invokefun()  

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)

vs 2005的條件斷點 除錯多執行緒必會

原文引自 相信在除錯 時可能都深有感觸,把斷點設定在某一行語句,程式一旦執行到這一語句便會停止,但是並非每一次停止的監控 都是我們所關心的,尤其是對於 for 迴圈的除錯,於是我們便不斷地按f5 來 快進 我們的 這樣做費時費力,有時候 不小心點快了又要重頭來.另外在除錯多執行緒程式時,程式控制在多...

vs 2005的條件斷點 除錯多執行緒必會

原文引自 相信在除錯 時可能都深有感觸,把斷點設定在某一行語句,程式一旦執行到這一語句便會停止,但是並非每一次停止的監控 都是我們所關心的,尤其是對於 for 迴圈的除錯,於是我們便不斷地按f5 來 快進 我們的 這樣做費時費力,有時候 不小心點快了又要重頭來.另外在除錯多執行緒程式時,程式控制在多...

C 帶參多執行緒操作

多執行緒操作 參考鏈結 新建 thread 物件會新建託管執行緒。thread 類包含需要使用 threadstart 委託或 parameterizedthreadstart 委託的建構函式 委託包裝在呼叫 start 方法時由新執行緒呼叫的方法。多次呼叫 start 會導致 threadstat...