首先,我正在使用标准 ASP.NET 网站创建类似于客户端/服务器解决方案的东西——我知道不建议使用这种方法,大多数人都喜欢尖叫“COMET!” 或“HTML5 套接字!” - 但请不要;-)!
我在做什么...
我正在网站上创建 MMORPG。
我有几个客户需要同时联系。这是由 Application 范围内的全局对象完成的。
我的问题
我需要向多个客户调用一个事件。例如,当攻击被执行时,我需要更新一些图形。攻击逻辑在全局对象中解析,但每个客户端都必须对此做出响应。
现在我执行以下操作:
fightTrace.Reciever.InvokeMoveEnded(this);
fightTrace.FiredBy.InvokeMoveEnded(this);
(这是一种观察者模式)
现在发生的是竞争条件。加载 page_load 事件的人将获得这两个事件,而未运行它们的人将不会在 UI 中经历任何变化。
那么我真正想要的是什么?
我真正需要的是通过应用程序状态创建观察者模式的一些真正而好的方法。我需要向每个“侦听器”发送一个事件,在这种情况下是一个客户端,然后进行一些更新。
做到这一点的一种方法是一些会话的东西,真/假..但我真的想要一些更好的方法!
谢谢!