我正在开发一个游戏。在这个游戏中玩家可以点击一个按钮攻击一个boss,他必须等待5分钟才能看到攻击的结果。攻击将在5分钟后执行。
所以这是我的尝试:这是单击按钮时调用的函数:
public static void InsertNewWaitingAttack(string attacker_id, string boss_id, DateTime start, DateTime done)
{
string sql = "INSERT INTO WaitingAttacks (AttackerID,BossID,AttackTime,DoneTime) VALUES (@A_ID,@B_ID,@Start,@Done); ";
sql += "WAITFOR DELAY '000:05:00'; ";
sql += "INSERT INTO BossAttacks (AttackerID,BossID,AttackTime,Damage) VALUES (@A_ID,@B_ID,@Start,@Damage); ";
sql += "DELETE FROM WaitingAttacks WHERE AttackerID=@A_ID AND AttackTime=@Start;";
SqlConnection sc = new SqlConnection(conString);
using (SqlCommand cmd = new SqlCommand(sql, sc))
{
cmd.Parameters.AddWithValue("A_ID", attacker_id);
cmd.Parameters.AddWithValue("B_ID", boss_id);
cmd.Parameters.AddWithValue("Start", start);
cmd.Parameters.AddWithValue("Done", done);
cmd.Parameters.AddWithValue("Damage", 500);
sc.Open();
cmd.ExecuteNonQuery();
sc.Close();
}
}
但是当我调用这个函数时,我得到了以下错误:
超时已过。在操作完成之前超时时间已过或服务器没有响应。
编辑:为了澄清我的问题,这是一个 asp.net 应用程序。该解决方案应考虑服务器应为多个客户端提供服务。
如果用户在执行攻击之前进入“结果页面”,他将看到执行攻击的倒计时。(这意味着应该始终可以访问攻击的开始时间。)
编辑#2:
问题是仍然相关。我还没有找到任何解决方案。