我认为,以模拟这将是一个最好的办法Fork与等的方法类use()持有叉(bool available = false)和release()释放它.
一个Philosopher带有getFork(Fork)和releaseFork(Fork)操作保持/释放对象Fork的类(在我看来,计时器在方法中会很好,useFork()所以你可以真正感知到死锁.
对于DinningTable创建实例的Last (或任何其他名称)类,并执行日志.如果你打算使用线程,在这里你应该实现为每个线程Philosopher赞同的Fork.
作为一个建议,你可以实现一个Plate类,持有一定数量的意大利面条,该Philosopher.useFork()方法在时间范围内降低.通过这种方式,您可以先看到哪些Philosopher完成.
当然,我会为你实现这些实现,因为你的目标是学习C#...根据我的经验,你最好学习像这些类一样具体的东西;)此外,你可以在Google上找到很多实现,如果你想欺骗......
我邀请你在它之后分享代码.这是一个很棒的学习参考.
希望这对你有帮助.