autoresetevent

    2熱度

    2回答

    我擁有固定數量的「瀏覽器」,每個「瀏覽器」都不是線程安全的,因此它必須在單個線程上使用。另一方面,我有一長串的線程等待使用這些瀏覽器。什麼我目前做的是有一個AutoResetEvent陣列: public readonly AutoResetEvent[] WaitHandles; 並進行初始化是這樣的: WaitHandles = Enumerable.Range(0, Browsers.C

    1熱度

    1回答

    我有多個鏈接,我想在一個循環中訪問。 訪問了一個站點後,我希望線程等到documentCompleted完成後再訪問下一個鏈接。 foreach (HtmlElement link in linkArray) { OpenNewProduct(link.ToString()); } public void OpenNewProduct(string url) { We

    1熱度

    1回答

    我不習慣與AutoResetEvent一起工作,我想知道如何發生以下情況。 我們有一個始終在兩臺不同的機器記錄不同的順序裝載操作的日誌文件: 機A(問題出現) Loading Module A Loading Module B Loading Shell. Show Window. Waiting Until Services are Loaded & Initialized. Lo

    0熱度

    2回答

    背景 我目前正在通過終端界面重新創建具有GUI功能的GUI功能。所以錯誤不在觸發事件的另一端,因爲它以原始的GUI形式工作。 我在多臺機器上運行由子任務組成的任務。 我訂閱了事件,這些事件在進行時觸發並打印出描述性消息。 要爲所有Y機器的每個X子任務打印一條消息。 然後發生異步多線程操作。 我想打印出每個子任務的消息,每個子任務只解析一次。 我追蹤子任務的完成情況,並保留一個2D布爾數組,其中行是

    0熱度

    1回答

    如果正在運行,如何在用戶請求關閉應用程序時等待BackgroundWorker完成?我想等這BackgroundWorker完成,然後退出應用程序。我嘗試使用AutoResetEvent,但在FormClosing時調用WaitOne()似乎阻止整個UI,並且不會觸發調用Set()的RunWorkerCompleted事件。 我該如何做到這一點? 我正在尋找替代/有道此: bool done =

    -1熱度

    1回答

    在下面的代碼中,我有一個用於控制同步的類KernalRecursiveAutoResetEvent。這有一個Lock和Leave方法,它調用AutoResetEvent的WaitOne()進行鎖定,Set()進行釋放。我設置了一個循環,所以我可以調用一個處理共享資源的方法。在方法Increment中,我將一個int添加到共享列表中。因爲離開被稱爲快於鎖定,因此比賽分子正在縮小。有沒有更好的方法來控

    1熱度

    2回答

    我想要一個運行某些處理的方法,該處理最多持續一秒鐘,休眠5分鐘,然後重複。我也希望用戶能夠擺脫睡眠並優雅地退出。我希望它可以在一整天內運行,而不會消耗太多的系統資源。什麼是最好的設計模式? 這是我第一次嘗試: 我使用一個線程等待並做處理。我不確定是否應該使用線程,線程池線程或任務。我不認爲它應該是一個任務,但因爲沒有涉及異步IO操作。我也不認爲我應該使用定時器,因爲我希望能夠在不等待下一個間隔的情

    2熱度

    1回答

    我有一點很難解釋的奇怪問題。我有singleton類,在構造函數中我必須運行一個任務來初始化一些組件/資源。 我從的C#深度使用了2個單身人士的執行情況,在一種情況下一切正常,在另一種情況下工作正常 - 不是。 代碼在下面有一些評論。 由於某種原因,任務在一種情況下不會啓動,主要問題是當我使用具有初始化和靜態構造函數的靜態字段(類Test2)時。 我做了一些其他測試,看起來像實現2任務不是以異步方

    1熱度

    2回答

    首先,我還是一個初學者,所以我會很感激,如果你可以有一定的耐心:) 我一直在抓我的腦袋,今天這麼辛苦。 事情是,我想運行三個不同的背景工作者。但是我想等到一個人完成後才能開始下一個,等等。 每個背景工作者都需要時間完成。長話短說,事情是,我使用WaitOne(),所以無論什麼時候以前的背景工作者告訴我它已經完成,我可以開始運行新的,但UI線程凍結,直到三名背景工作者完成。 我正在設置一個不同的Au

    0熱度

    1回答

    我想在現有的GUI修補問題,其中大部分是由這個答案粘貼下面的代碼解決 - >How to wait for a BackgroundWorker to cancel? private BackgroundWorker worker = new BackgroundWorker(); private AutoResetEvent _resetEvent = new AutoResetEvent(f