我正在设计一款 Silverlight 游戏,但我坚持使用游戏结束功能。这是一款回合制纸牌游戏,我使用的是 WCF Duplex。但是当我调用 finalize 函数时,回调在 OnFinalized 消息之前接收 OnEndGame 消息。在开始新游戏之前,我需要在客户端播放一些动画。我尝试了很多东西,包括 Thread.Sleep 和 Task.Wait 等,但我无法找出问题所在。我应该怎么做才能让 EndGame 方法返回一些时间?
private void FinalizeGame()
{
this.GameState = Enums.GameState.Finalize;
Task.Factory.StartNew(()=>{
CalculateWinners();
GameSubscriptionManager.Publish(SubscriptionType.GameStream, cb => cb.OnFinalize(this));
}).ContinueWith((antecedent)=>{
EndGame();
});
}
private void EndGame()
{
this.GameState = Enums.GameState.None;
Thread.Sleep(5000);
GameSubscriptionManager.Publish(cb => cb.OnEndGame(this));
RemovePlayersAndGetWaitingPlayers();
if (PlayingPlayers.Count > 1)
{
ResetGame();
StartGame();
}
else
{
GameState = GameState.None;
GameSubscriptionManager.Publish(cb => cb.OnWaitingForNewPlayers(this));
}
}