有一个状态机在同一个函数中有两个转换。状态机问题
static readonly object _object = new object();
lock (_object)
{
// I want Host received the event of SMTrans01 first .
Obj.StateMachine.Send((int)MyStateMachine.EventType.SMTrans01, new object[2] { Obj, MyStateMachine.EventType.SMTrans01 });
}
lock (_object)
{
// And then I want Host received the event of SMTrans02.
Obj.StateMachine.Send((int)MyStateMachine.EventType.SMTrans02, new object[2] { Obj, MyStateMachine.EventType.SMTrans02 });
}
我实现了我的状态机代码,如上所述。我不确定我是否正确理解Lock
陈述?
我需要的事件遵循正确的顺序(主机收到SMTrans01第一,然后主机收到SMTrans02事件)。
测试后,我发现某个主机将首先接收SMTrans02事件。看起来像Lock
声明不起作用。我不知道为什么。
有没有什么好的方法来处理它?
对于锁定我不会用一个静态对象 - 或者你真的需要在你的对象的所有实例的锁?否则我会考虑转而使用真正的单身人士,而且仍然没有静态锁定。 – weismat 2010-10-22 09:06:42
@weismat。我只是想控制我的事件按照正确的顺序。我并不需要'Lock'。我想我实际上不需要使用'lock'。但我找不到其他解决方案。谢谢。 – 2010-10-22 09:09:51