Иногда метод не выполняется в asp. net c# при публикации - PullRequest
0 голосов
/ 16 июня 2020

У меня есть веб-сайт аукциона в веб-формах 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 веб-сайт на сервере ..

Я что-то делаю не так? Пожалуйста, помогите мне.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...