У меня есть веб-сайт аукциона в веб-формах asp. net (пустой веб-сайт). Я установил таймер обратного отсчета с помощью панели обновлений и управления таймером. Поскольку это веб-сайт аукциона, на нем будет присутствовать много пользователей. одна веб-страница. Теперь, когда таймер завершает отсчет таймера обратного отсчета, я вызываю метод, но только некоторые из пользователей, присутствующих на странице аукциона, могут выполнить этот метод, а другие - нет. Я не знаю, почему это так. 1002 * Это отлично работает на локальном хосте, но когда я публикую sh веб-сайт на сервере, я начинаю сталкиваться с проблемами этого типа.
Вот код
Код внутри тика панель обновлений для таймера:
protected void tm1000ms_Tick(object sender, EventArgs e)
{
if (Application["AuctionTimer"] != null)
{
if (!(Application["AuctionTimer"] as CountDownTimer).TimeLeft.ToString().Equals("00:00:00"))
{
string rawTime = "";
string AuctionTime = "";
rawTime = (Application["AuctionTimer"] as CountDownTimer).TimeLeft.ToString();
AuctionTime = rawTime.Substring(rawTime.IndexOf(":") + 1);
int timerSec = Convert.ToInt32(AuctionTime.Substring(AuctionTime.IndexOf(":") + 1));
lblTimer.ForeColor = Color.Black;
lblTimer.Text = AuctionTime + "sec";
}
else
{
startNewItemLoading(); // **This method is not executed by some users!
if (Session["AdminID"] != null)
{
// Sold the Item
}
}
}
}
private void startNewItemLoading()
{
tm1000ms.Enabled = false; // timer for Auction is disabled.
divItemCard.Visible = false; // Item div is disabled so new item loading can be shown
divnewPlayerCard.Visible = true; // Enabling the item loading div
upPlayerCard.Update(); // refreshing update panel as both are inside same update panel
RestartFreshStopwatch(); // After that restarting the Auction Timer Again for new Item.
}
Класс обратного отсчета для таймера
public class CountDownTimer
{
public TimeSpan TimeLeft;
System.Threading.Thread thread;
public CountDownTimer() { }
public CountDownTimer(TimeSpan original)
{
this.TimeLeft = original;
}
public void Start()
{
thread = new System.Threading.Thread(() =>
{
while (true)
{
if (!TimeLeft.Equals(TimeSpan.Parse("00:00:00")))
{
System.Threading.Thread.Sleep(1000);
TimeLeft = TimeLeft.Subtract(TimeSpan.Parse("00:00:01"));
}
}
});
this.thread.Start();
}
public void Stop()
{
TimeLeft = TimeLeft.Add(TimeSpan.Parse("00:00:00"));
if (this.thread != null)
this.thread.Abort();
}
}
метод startNewItemLoading не выполняется некоторыми пользователями, но некоторые из них могут это сделать, я не знаю почему, но эта проблема начинается, когда я публикую sh веб-сайт на сервере ..
Я что-то делаю не так? Пожалуйста, помогите мне.