ASP. NET MVC - как изменить вид, когда поток закончится - PullRequest
0 голосов
/ 05 мая 2020

Я хочу сделать ActionResult с запуском потока. Когда поток запущен, я верну представление с загрузкой, но когда поток завершится, ActionResult вернет другое представление

Мой код выглядит так:

  private static void ExecuteScrapper()
        {
            ScriptEngine pythonEngine = IronPython.Hosting.Python.CreateEngine();
            ScriptSource pythonScript = pythonEngine.CreateScriptSourceFromFile(HostingEnvironment.MapPath("/PythonScript/main.py"));

            var searchPath = pythonEngine.GetSearchPaths();
            searchPath.Add(HostingEnvironment.MapPath("/PythonScript/"));
            searchPath.Add(HostingEnvironment.MapPath("/PythonScript/drivers/"));
            pythonEngine.SetSearchPaths(searchPath);

            var result = pythonScript.Execute();

        }

        private ScrapperEnum.ScrapperOperations scraperParam;

        private Thread t = new Thread(new ThreadStart(ExecuteScrapper));

        public ActionResult RunScrapper(ScrapperEnum.ScrapperOperations operation)
        {
            scraperParam = operation;
            t.Start();
            bool run = false;

            while(t.IsAlive)
            {
                if(!run)
                {
                    run = true;
                    return View("ScrapperLoadingView");
                }
            }

            return RedirectToAction("Scrapper");
        }

Я точно не знаю, как это сделать , потому что, когда в этом коде я возвращаю ScrapperLoginView, он сломается, пока функция не переключает вид

1 Ответ

0 голосов
/ 05 мая 2020

Вам просто нужно добавить еще, если я прав

     while(t.IsAlive)
                {
                    if(!run)
                    {
                        run = true;
                        return View("ScrapperLoadingView");
                    }

             else 
            {
                return RedirectToAction("Scrapper");
            }
           }
         }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...