在工作中,會遇到需求多線程處理相應的業務需求,最典型的包括Socket的通信。
多線程處理里,就會考慮到,哪個線程先運轉,哪個線程后運轉的情況。
這里我介紹一下,運用ManualResetEvent類來對線程進行堵塞和持續操作。
它有三個重要的辦法:Reset、Set和WaitOne。
1、首先介紹一下它的構造函數:
publicManualResetEvent(boolinitialState);
參數initialState,假如為true,則將初始狀況設置為停止;假如為false,則將初始狀況設置為非停止。
這是什么意思呢?它的意思是:假如為false時,初始化ManaulResetEvent目標為非停止狀況,當有線程調用ManaulResetEvent的WaitOne()辦法時,該線程將進入堵塞狀況。
假如改為true,則會初始化ManaulResetEvent目標為停止狀況,當有線程調用ManaulResetEvent的WaitOne()辦法時,該線程可以持續履行后面的操作。c#
2、Reset()辦法
Reset辦法,它會將ManualResetEvent的目標設置為非停止狀況,告訴調用ManaulResetEvent的WaitOne()辦法的線程:此處將堵塞線程。
3、Set()辦法
Set辦法與Reset剛好相反,當有線程調用Set()辦法時,它會告訴包括ManaulResetEvent的WaitOne()辦法的線程:此處改為了停止狀況,程序可以持續運轉了。
來源:C#多線程