2009-11-17 42 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