簡體   English   中英

使 class 中的所有方法在 c# 的同一線程上運行

[英]Making all methods from a class to run on the same thread in c#

我想創建具有自己的線程的 singleton,並執行每個方法(假設這是數據庫,並且每個添加/修改操作都需要從同一個線程調用),該線程可以在構造函數中創建,我也想要那個singleton 中的每個方法都將在這個特定線程上執行。

據我了解,新的 System.Threading.Thread.Thread() 使我能夠啟動線程,但啟動后,我無法自由地對它進行下一個工作。 如何將新工作排隊到該線程? 這應該像 myThread.Queue(()=> doWork()); 但我沒有看到這樣的 api。

下面的簡化代碼顯示了如何做到這一點。 TryTake 將無限期地阻塞(或 unitl collection.CompleteAdding()被調用,盡管有接受超時值的重載。

        var collection = new BlockingCollection<Action>();

        new Thread(() =>
        {
            while (collection.TryTake(out Action a, -1))
            {
                     a.Invoke();
            }
        }

        }).Start();

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM