Я спрашивал несколько раз, но должен спросить снова, потому что я не знаю, что делать:
На моей странице есть система аукциона.
Каждую секунду я должен:
- Получить информацию, если какая-либо заявка на покупку -> Запрос к базе данных
- Таймер обратного отсчета минус 1 секунда
- Обновите несколько панелей с информацией, если есть новый претендент (история показывается, бла)
Моя (забавная) проблема заключается в том, что в панели обновлений только с меткой-таймером и обратным отсчетом этого времени необходим только простой Ajax-таймер ASP.Net (который мне нужен, я думаю, потому что мне нужен DAL и т. более 1 секунды ...
Это означает, что когда я запускаю таймер, который только преобразует метку в DateTime, удаляет 1 секунду и обновляет метку, через 10 обычных секунд он не запускается 10 раз, только 8 раз.
Итак, через 10 секунд я теряю 2 секунды ...
Я не хочу отображать изображения, когда начинаю запрашивать базу данных внутри ....
Что делать?
Я обнаружил, что это не спектакль, который слишком медленный.
Таймер не запускается каждую секунду.
Я заполнил Debug.Writeline с миллисекундным началом и окончанием таймера, вот 3 примера:
- 2009.11.18 13: 13: 21: 1821
- 2009.11.18 13: 13: 21: 1821
- 2009.11.18 13: 13: 22: 7021
- 2009.11.18 13: 13: 22: 7021
- 2009.11.18 13: 13: 24: 2421
- 2009.11.18 13: 13: 24: 2421
Таким образом, он заканчивается в миллисекундах, но начинается снова не в правильном интервале (должно быть 1000 миллисекунд!)
По желанию код:
protected void Timer1_Tick(object sender, EventArgs e)
{
System.Diagnostics.Debug.WriteLine(DateTime.Now.ToString("yyyy.MM.dd HH:mm:ss:ffff"));
DateTime dt = DateTime.Parse(lblTimer.Text);
dt = dt.AddSeconds(-1.0);
lblTimer.Text = dt.ToString("HH:mm:ss");
System.Diagnostics.Debug.WriteLine(DateTime.Now.ToString("yyyy.MM.dd HH:mm:ss:ffff"));
}
2)
<asp:UpdatePanel ID="up1" UpdateMode="Conditional" runat="server">
<ContentTemplate>
<asp:Timer ID="timeAD" Interval="1000" Enabled="true" runat="server" ontick="Timer1_Tick">
</asp:Timer>
<asp:Label ID="lblTimer" runat="server" Text="Label"></asp:Label>
</ContentTemplate>
</asp:UpdatePanel>