2009-11-17 98 views
3

不幸的是,在使用.NET Compact Framework時,System.Threading中沒有信號量。 我不確定這是爲什麼,有沒有人有想法?.NET精簡框架中的信號燈

谷歌搜索後,我發現一羣人給自己的實現,但沒有一個真的很棒......或者根本沒有!

所以我來請專家...

有沒有人有一個良好的信號類/庫,他們可以推薦爲.NET精簡框架 ?

有沒有我能模仿的行爲?

我有一個典型的生產者/消費者設置,其中一個線程將對象推入隊列(System.Collections)。 然後,我想要一個消費者線程將對象從隊列中拉出來,並進行工作,但顯然只有在隊列中有東西需要處理時才能工作!

我在C#中工作,但我會採取任何語言的解決方案/僞,只要我可以在.NET CF上實現它。

回答

4

您可以PInvoke到CreateSemaphore和ReleaseSemaphore-它們在coredll的CE上實現。很容易編寫一個很好的託管包裝,看起來像System.Threading.Semaphore。

+0

我想知道如果這是最好的方法。感謝您的迴應 – Fuzz 2009-11-17 10:26:26

2

我認爲有一個信號量實施OpenNETCF

+0

所以有.... :-) 我仍然不知道爲什麼它沒有被包括在內 確實有很多從.NET CF 1.0中缺失,但我們需要3.5並且仍然沒有信號量。信號量是一個相當核心的進程間通信設備。 – Fuzz 2009-11-20 13:54:03

+0

告訴我關於它。 M $顯然不關心CF或者打算用其他東西替換WinCE/CF。這是我能想出的唯一推理。包尺寸參數很愚蠢,因爲現在設備有更多的空間,並且它們總是可以有一個「更全面」的版本或者將這些類庫作爲附件發佈。 – Quibblesome 2009-11-20 14:41:14

+0

我同意。 CF受到嚴重忽視。 OpenNETCF是最好的。 – 2009-11-23 14:58:07