LogandadLoga LogandadLoga Ответов: 1

Почему мой код продолжает отставать?


Привет, я работал над этим кодом в c# in asp.net... Он бежал, но отставал. Он не падает, но он не показывает, что он должен делать, если я не удалю цикл получения моего файла и вывода его в текстовое поле.

Эта программа проверяет наличие файла в каталоге, если его там нет, она перезапускает цикл, если он там есть, она отправляет его, а затем удаляет его повторы...

Что я уже пробовал:

   protected void Button5_Click(object sender, EventArgs e)
        {
            if (TextBox1.Text == "" || TextBox1.Text.Contains(" "))
            {
                Button6.Visible = true;
            }
            else
            {
                if (Directory.Exists("C:\\Users\\Logan\\Documents\\Visual Studio 2015\\Projects\\TFR\\data\\codes\\" + TextBox1.Text))
                {
                    Button6.Visible = false;
                    Button5.Visible = false;
                    TextBox1.Visible = false;
                    TextBox2.Visible = true;
                    SendText("Starting privatefeed using the code \"" + TextBox1.Text + "\"");
                    SendText("Developed and created by Logan Risen!");
                    SendText("Our discord: https://discord.gg/vJcx3sz");
                    SendText("-----------------------------------------------------------------------------");
                    Task wait = Task.Delay(2000);
                    wait.Wait();
                    Run();
                    
                }


                else
                {
                    Button6.Visible = true;
                }
            }
        }
       
   /*     private void Start()
        {
            Task t = Task.Delay(8000);
            t.Wait();
            Run();
        }
      */  private void Run()
        {
         //   System.Threading.Thread.Sleep(1000);
         
                
                try
                {
                string latest = File.ReadAllText("C:\\Users\\Logan\\Documents\\Visual Studio 2015\\Projects\\TFR\\data\\codes\\" + TextBox1.Text + "\\group.txt");
                Task delay = Task.Delay(5000);
                    delay.Wait();
                
                    if (File.Exists("C:\\Users\\Logan\\Documents\\Visual Studio 2015\\Projects\\TFR\\data\\codes\\" + TextBox1.Text + "\\group.txt"))
                    {
                        if (latest == "")
                        {
                            Console.WriteLine("N1");
                        }
                        else
                        {
                            if (latest == last)
                            {
                                Console.WriteLine("N2");
                            }
                            else
                            {
                                SendText(latest);
                            }
                        }
                        last = latest;
                        if (latest == "")
                        {
                            Console.WriteLine("N2");
                        }
                        else
                        {
                            Console.WriteLine("D");
                            File.Delete("C:\\Users\\Logan\\Documents\\Visual Studio 2015\\Projects\\TFR\\data\\codes\\" + TextBox1.Text + "\\group.txt");
                        }

                        Run();
                    }
                    else
                    {
                        Run();
                    }
                }
                catch
                {
                Run();
                }
            }
    }
}

NotPolitcallyCorrect

Вероятно, потому, что вы вызываете Run рекурсивно и добавляете задержки в свой код без видимой причины и на веб-странице, которая никогда не должна иметь консоли.Что угодно или задержки......

LogandadLoga LogandadLoga

Ну и как я могу это исправить? Задержки должны остановить переполнение...

Afzaal Ahmad Zeeshan

Переполнения останавливаются, гарантируя, что данные не вставляются в те места, куда они не должны идти, или когда размер достигается. Пауза или отсрочка не помогут.

Во-вторых, рекурсивный шаблон программирования является одной из причин переполнения.

LogandadLoga LogandadLoga

Ну, ты можешь помочь мне починить его?

Afzaal Ahmad Zeeshan

Не могли бы вы объяснить немного подробнее, что вам нужно сделать с этим, чтобы мы могли решить эту проблему?

LogandadLoga LogandadLoga

Эта программа проверяет наличие файла в каталоге, если его там нет, она перезапускает цикл, если он там есть, она отправляет его, а затем удаляет его повторы...

NotPolitcallyCorrect

Больше похоже на то, что вам нужен наблюдатель файловой системы.

LogandadLoga LogandadLoga

Да! Я хочу, чтобы он обнаруживал новые файлы, которые приходят...

NotPolitcallyCorrect

Затем создайте наблюдатель файловой системы и используйте соответствующие инструменты для этой работы, что с вероятностью 99% означает, что это не веб-приложение.

LogandadLoga LogandadLoga

это веб-приложение

1 Ответов

Рейтинг:
2

Patrice T

Страница, вероятно, отстает из-за всех этих wait() в коде. Вам нужно точно объяснить, что должен делать код.
Это также выглядит так,что код вызывает себя бесконечно и никогда не выходит. Ожидание-это единственное, что предотвращает stackoverflow, потому что вы останавливаете приложение перед сбоем.

Когда вы не понимаете, что делает ваш код или почему он делает то, что делает, ответ таков: отладчик.
Используйте отладчик, чтобы увидеть, что делает ваш код. Просто установите точку останова и посмотрите, как работает ваш код, отладчик позволяет вам выполнять строки 1 на 1 и проверять переменные по мере их выполнения, это невероятный инструмент обучения.

Отладчик-Википедия, свободная энциклопедия[^]
Освоение отладки в Visual Studio 2010 - руководство для начинающих[^]
Базовая отладка с помощью Visual Studio 2010-YouTube[^]

Отладчик здесь для того, чтобы показать вам, что делает ваш код, и ваша задача-сравнить его с тем, что он должен делать.
В отладчике нет никакой магии, он не находит ошибок, он просто помогает вам. Когда код не делает того, что ожидается, вы близки к ошибке.


LogandadLoga LogandadLoga

Дело не в этом... Его переполняют... Я пытаюсь определить, когда файл генерируется в папку для запуска какого-то кода.

Patrice T

Речь идет об отставании !
опишите проблему переполнения, о которой идет речь.
Воспользуйся Улучшить вопрос чтобы обновить ваш вопрос.
Чтобы каждый мог обратить внимание на эту информацию.