彙編中使用多執行緒技術(非常簡單)

2021-05-01 06:18:34 字數 1656 閱讀 2469

以下是乙個例項,

說明:_showbmpthread proc uses ebx esi edi,_lparam(這種格式是win32api中指定的格式,注意那個引數,_lparam,必須有(1個))

呼叫過程: _showbmp proc  hwinmain:dword(裡面最關鍵的就是 invoke createthread,null,0,addr _showbmpthread,hwinmain,null,addr @dwthreadid)這一句,注意hwinmain的引數就是傳給_lparam使用的。然後就是 invoke closehandle,eax

所以簡單一點描述就是這樣子的

_showbmpthread proc uses ebx esi edi,_lparam

;....執行緒工作的內容

ret_showbmpthread endp

_showbmp proc  

local @dwthreadid

;執行緒呼叫 dwparamter 就是傳給_lparam的引數,這裡為null,倒數第三個引數。

invoke createthread,null,0,addr _showbmpthread,null,null,addr @dwthreadid

invoke closehandle,eax

ret_showbmp endp

應用中的例項見下面:

_showbmpthread proc uses ebx esi edi,_lparam

local hwinmain:dword

local bmp:hbitmap

local mdc:hdc

local hdc:hdc

mov eax,dword ptr _lparam

mov hwinmain,eax

pushad

;1 首先把點陣圖載入:

invoke loadimage,null,addr szbmppath,image_bitmap,0,0,lr_loadfromfile

mov bmp,eax

mov edx,hwinmain;目標窗體控制代碼

invoke getdc,edx

mov hdc,eax

;2 從你的dc中建立記憶體dc      

invoke createcompatibledc,hdc;注意這個hdc由上面getdc函式獲取,如果在在哪個窗體畫圖就獲取哪個窗體的dc通過控制代碼

mov mdc,eax

;3 把點陣圖選入記憶體dc   

invoke selectobject,mdc,bmp

;4 帖圖

invoke bitblt,hdc,50,90,500,400,mdc,0,0,srccopy

invoke deletedc,mdc

invoke releasedc,edx,hdc

popad

ret_showbmpthread endp

_showbmp proc  hwinmain:dword

local @dwthreadid

invoke createthread,null,0,addr _showbmpthread,hwinmain,null,addr @dwthreadid

invoke closehandle,eax

ret_showbmp endp

在WPF程式中使用多執行緒技術

在wpf應用程式中使用多執行緒的方式與windows forms很類似,區別在於,如果需要更新主線程ui上面的元素,需要用乙個特殊的方法 this.dispatcher.invoke 下面是乙個簡單的範例,演示了如何執行乙個簡單的方法,它使用了callback的機制進行多執行緒非同步執行。func ...

在WPF程式中使用多執行緒技術

在wpf應用程式中使用多執行緒的方式與windows forms很類似,區別在於,如果需要更新主線程ui上面的元素,需要用乙個特殊的方法 this.dispatcher.invoke 下面是乙個簡單的範例,演示了如何執行乙個簡單的方法,它使用了callback的機制進行多執行緒非同步執行。func ...

c 中使用多執行緒

using system using system.drawing using system.collections using system.componentmodel using system.windows.forms using system.data using system.threa...