Ответ .NET до завершения асинхронной задачи - PullRequest
2 голосов
/ 03 октября 2011

У меня есть веб-приложение, и пользователи отправляют запросы на изменение больших объемов данных.Возможно, сохраняются 1000 или более объектов.

Я предварительно проверяю эти запросы, а затем начинаю сохранять данные.Это действительно не займет много времени, чтобы сохранить индивидуально, но умножить на несколько тысяч, и это делает.Я использую среду OR / M и не хочу от нее отходить ... и это не является узким местом.

Я мог бы построить постоянный меньший объектный граф - просто «план»о том, как сохранить оставшуюся часть и затем сохранить ее каким-либо другим способом, но я бы действительно предпочел более простое решение.

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

Возможно ли это в .NET?Есть предложения?

Спасибо

1 Ответ

1 голос
/ 03 октября 2011

Вы можете сначала проверить ввод, установить какую-то метку состояния, указывающую, что все прошло нормально, а затем запустить часть персистентности в новом потоке.

Я имею в виду что-то вроде этого:

 protected void Button1_Click(object sender, EventArgs e)
 {
      new Thread(() => { 
          //logic to save the data goes here.
      }).Start();
      Label1.Text = " Input validated. Thanks!";
 }

Пользователь может безопасно закрыть браузер, и операция завершится.

EDIT

Комментарий «Разбитое стекло» является верным в том смысле, что этот подход плохо масштабируется. Есть лучший способ выполнить этот тип асинхронных операций. Это подробно здесь.

...