91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

如何在實際項目中使用ManualResetEvent

發布時間:2020-06-02 20:20:55 來源:億速云 閱讀:298 作者:Leah 欄目:編程語言

本文以ManualResetEvent的使用方法為例,為大家分析在實際項目中使用ManualResetEvent的方法。閱讀完整文相信大家對在實際項目中對ManualResetEvent等類的使用有了一定的認識。

1、在一個線程對應的方法里,如果想隔幾秒鐘執行一次,那么在方法里這樣寫
如何在實際項目中使用ManualResetEvent
如何在實際項目中使用ManualResetEvent
關于ManualResetEvent類
如何在實際項目中使用ManualResetEvent
2、在運行程序的時候(啟動控制臺或啟動服務)啟動GetDSBaseData()方法的線程,該線程是后臺線程
如何在實際項目中使用ManualResetEvent
2.1、我調試發現GetDSBaseData()方法只會在程序啟動的時候執行一次。如果捕獲到異常,執行Set()方法,重新執行一次GetDSBaseData()方法。
如何在實際項目中使用ManualResetEvent
2.2、以下方法UpdateVehicleInfoFromDB()是在上圖中的GetDSBaseData()啟動了一個線程的。以下方法1分鐘執行一次:這是一個死循環,每次執行完方法,使用Thread.Sleep(60 * 1000)語句停頓1分鐘再執行下一次。
如何在實際項目中使用ManualResetEvent
3、首先定義了1個全局的Event對象和1個全局的隊列,由于實例化Event對象時傳入的是false,所以此對象默認狀態為“非終止”,寫了WaitOne()方法的線程,首次不會執行,處于等待狀態。原因是:首次執行隊列里面都沒有數據,不需執行出隊列操作。
如何在實際項目中使用ManualResetEvent
3.1、有2個線程對這個隊列進行操作,一個線程入隊列,一個線程出隊列。
我發現,在入隊列的線程,需要給這個Even對象,執行.Set()方法,將事件狀態設置為終止狀態,允許一個或多個等待線程繼續。告訴出隊列的線程,現在隊列里有數據了,可以再次執行出隊列的操作了。
調用Set以發出等待線程可以繼續進行的信號
如何在實際項目中使用ManualResetEvent
3.2、我發現,在出隊列的線程,需要給這個Event對象執行Reset()方法,將事件狀態設置為非終止狀態,導致線程阻止。由于這是一個無限循環,由于執行了Reset(),當下次執行到WaitOne()時,會一直處于等待,直到入隊列把Event對象執行.Set()方法為止,才會繼續執行。是為了防止隊列中沒有數據的時候去執行出隊列的無限循環,浪費系統資源
如何在實際項目中使用ManualResetEvent

關于在實際項目中使用ManualResetEvent的方法就分享到這里了,希望以上內容可以對大家有一定的幫助,可以學到更多知識。如果喜歡這篇文章,不如把它分享出去讓更多的人看到。

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

封丘县| 瑞丽市| 公主岭市| 保靖县| 长白| 巨鹿县| 韩城市| 黄冈市| 和田市| 阿拉善右旗| 玉门市| 中超| 双鸭山市| 会东县| 丹凤县| 巩义市| 长治市| 电白县| 旬阳县| 呼玛县| 桃江县| 独山县| 综艺| 金平| 天长市| 浠水县| 隆回县| 嘉黎县| 镇原县| 和龙市| 陆良县| 璧山县| 错那县| 邮箱| 墨竹工卡县| 视频| 南丹县| 安丘市| 玛纳斯县| 珠海市| 扎鲁特旗|