Делать некоторую очистку после того, как клиентский запрос полностью обслужен, в c # ASP.net MVC, как? - PullRequest
0 голосов
/ 09 декабря 2011

давайте предположим, что у меня есть действие вроде:

    public ActionResult Register()
    {
        // Doing user register
        user_register();   // take almost no time
        // doing some stats and other clean up
        more_clean_up();   // take few seconds
        return View();
    }

вот чего я хочу достичь:

        user_register();
        return View();
        more_clean_up();

Я знаю, что приведенный выше код не будет работать, more_clean_up (); никогда не будет казнен. Так как more_clean_up (); Задача не важна для view (), она также требует времени, поэтому я хочу, чтобы она выполнялась каким-то образом, а не блокировала работу с текущими пользователями.

Я знаю способ открыть другой поток или перейти на асинхронный режим, но я больше предпочитаю, если есть способ:

doing_some_render_for_client();
Response.Flush();
**disconnect_from_client();**
more_clean_up();

Кто-нибудь знает, как disconnect_from_client (); но не завершать как ApplicationInstance.CompleteRequest (); делает

Спасибо.

1 Ответ

1 голос
/ 09 декабря 2011

Вам следует создать новую тему для этого, используя ThreadPool .Просто дайте ему свой метод more_clean_up (вам нужно убедиться, что он имеет единственный параметр object), и у вас все будет готово.

Чтобы ответить на ваш второй вопрос более конкретно - Нет, вы действительно не должныне пытаюсь сделать это.

...