本文章**: 感覺蕭蕭空間分享。
前不久寫了乙個專案,其中需要處理大量的資料,這些資料都是記錄型的,對這些資料進行處理是乙個非常耗時的事情,.net在處理這些使用的過程中,就好像宕機一樣一動不動。這樣給使用者的感覺非常的不好。例如如下的例子,我們在乙個窗體上放置乙個progressbar,然後對progressbar進行迴圈新增,例如:
1private
void
btnprocess_click(
object
sender, eventargs e)215
}還是在原來的窗體上,我們使用執行緒的方式去處理。
1delegate
void
delegatetype(
intx);
2delegatetype thedelegate;34
intstartfrom, endto;56
private
void
btnstartthreaded_click(
object
sender, eventargs e)721
22void
messagehandler(
intnprogress)
2327
28void
processroutine()29}
這個是使用執行緒的方法去處理,但是問題還是有的,雖然執行緒處理了使用者介面效果的問題,但是對於大資料量處理過程中,很耗時的,使用者可能會去取消自己的操作,所以我們要新增方法去對自己的執行緒取消。微軟這個方面做的很好,它提供了manualresetevent的委託類,可以輕鬆的對執行緒進行取消。**如下:
首先新增manualresetevent的委託:
=new
manualresetevent(
false
private
void
btncancelbutton_click(
object
sender, eventargs e)
this
.begininvoke(
this
.thedelegate, nvalue);
thread.sleep(
200);}}
另外一點,我們還可以對執行緒進行擴充,就是將執行緒的暫停和繼續,這個就很簡單了,就是對執行緒的suspend和resume,只要再新增按鈕設定執行緒的suspend和resume就可以了。**如下:
bool
isthreadpaused;
private
void
btnpause_click(
object
sender, eventargs e)
else
}
iOS開發 多執行緒篇 多執行緒介紹
一 程序和執行緒 1 什麼是程序 程序是指在系統中正在執行的乙個應用程式 每個程序之間是獨立的,每個程序均執行在其專用且受保護的記憶體空間內 比如同時開啟迅雷 xcode,系統就會分別啟動2個程序 通過 活動監視器 可以檢視mac系統中所開啟的程序 3 執行緒的序列 1個執行緒中任務的執行是序列的 ...
iphone開發 多執行緒
from 舉例說明怎麼簡單的建立乙個子執行緒。用到的類是nsthread類,這裡使用detachnewtheadselector totagaet withobject建立乙個執行緒。函式setupthread nsarray userinfor。通過userinfor將需要的資料傳到執行緒中。函式...
iphone開發 多執行緒
舉例說明怎麼簡單的建立乙個子執行緒。用到的類是nsthread類,這裡使用detachnewtheadselector totagaet withobject建立乙個執行緒。函式setupthread nsarray userinfor。通過userinfor將需要的資料傳到執行緒中。函式定義 vo...