[C #] Ответ. запись не работает при использовании потока

#c# #asp.net

#c# #asp.net

Вопрос:

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

     protected void updateBtn_Click(object sender, EventArgs e)
    {                
    Thread email = new Thread(delegate ()
            {
                sendmail(//send some string);
            });
            email.IsBackground = true;
            email.Start();
    }
  

Есть какой-то ответ.Запись в методе sendmail (), и когда я пытаюсь отладить, отображается ошибка

System.Web.HttpException: ‘Ответ недоступен в этом контексте.’

Это sendmail()

 private void sendmail(//string input)
{
       //do something about smtp
       Response.Write("Test message");
}
  

Комментарии:

1. Где вы написали ответ. Писать? прямо сейчас я не вижу в вашем коде

2. В наши дни нет причин использовать Thread класс, если у вас нет конкретного варианта использования. отправка почты должна быть асинхронной, поскольку она выполняет ввод-вывод. все это должно просто использовать шаблон async и await

3. @PurveshPatel Извините, теперь я отредактировал, чтобы добавить ответ. Запись.

Ответ №1:

Response Объект связан с обработчиком событий кнопки и недоступен в новом потоке, который вы запускаете.

Обработчик событий завершается вскоре после запуска нового потока. Все, что записано в Response , должно быть сделано до того, как этот обработчик вернется.

Ответ №2:

Я проверил ваш код, он работает отлично

 protected void Page_Load(object sender, EventArgs e)
        {
            if (!IsPostBack)
            {
                //GetData();

                CheckThread();
            }
        }

        private void CheckThread()
        {
            Thread email = new Thread(delegate ()
            {
                sendmail();
            });
            email.IsBackground = true;
            email.Start();
        }

        private void sendmail()
        {
            Response.Write("Call this function!");
        }
  

введите описание изображения здесь