저는 실버 라이트 게임을 디자인하고 있으며 게임 종료 기능을 고수하고 있습니다. 턴 기반 카드 게임이고 WCF Duplex를 사용하고 있습니다. 하지만 finalize 함수를 호출하면 OnFinalized 메시지 앞에 콜백 함수가 OnEndGame 메시지를 수신합니다. 새로운 게임을 시작하기 전에 클라이언트에서 애니메이션을 재생해야합니다. 나는 Thread.Sleep과 Task.Wait 등을 포함하여 많은 것들을 시도했지만 문제를 파악할 수 없었다. EndGame 메소드가 반환되는 데 시간을 할애하려면 어떻게해야합니까?WCF 및 Silverlight의 Thread.Sleep
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));
}
}
어디에서'Finalize' 메서드를 호출하고 메서드 자체는 어디에 있습니까? – sll
게임 결과가 계산되고 새 게임이 시작되어야하는 게임의 마지막 단계입니다. 서비스에서 Finalize 메서드를 호출하여 Aleksandir의 도움을 받아 – Kubi