Веб-приложение ASP.NET вызывает асинхронно C # метод Main () для другого проекта - PullRequest
0 голосов
/ 23 мая 2018

У меня есть веб-приложение, которое выполняет две основные функции: 1. сопоставляет ключ API пользователя с ключом базы данных 2. позволяет пользователю ввести файл и удалить его для загрузки.Что я пытаюсь сделать сейчас, с очень элементарным пониманием асинхронности, так это когда пользователь нажимает кнопку «отправить» на веб-странице, веб-страница затем указывает на метод Main () для выполнения и затем имеетвыводить сообщение о том, что оно прошло успешно после его завершения.По сути, я стараюсь избегать непосредственного вызова процесса .exe, потому что это приложение вскоре будет подключено к облачному серверу.

Я тщательно изучил задачи и вызов, но похоже, что я запускаюв ошибке, что веб-страница будет загружаться непрерывно в течение примерно 5 минут, а затем выводит сообщение сервера о том, что она не может "найти сервер".Я знаю, что это в основном из-за того, что мои методы не структурированы правильно для асинхронной работы.

мой код ASP.NET выглядит следующим образом (для кнопки):

    private async void Submit1_ServerClick(object sender, EventArgs e)
    {
            string fn = Path.GetFileName(File1.PostedFile.FileName);
            string SaveLocation = Server.MapPath("Data") + "\\" + fn;
            if (!File.Exists(SaveLocation))
            {
            File1.PostedFile.SaveAs(SaveLocation);
            await Task.Run(() => Program.Main());
            //IAsyncResult result = Task.Run(() =>caller.BeginInvoke(null, null));
           //caller.EndInvoke(result);
           Response.Write("The file has been uploaded and the Estimated Values should now be reflected in Rally.");
           }
           else
           {
           File.Delete(SaveLocation);
           File1.PostedFile.SaveAs(SaveLocation);
           await Task.Run(() => Program.Main());
           //IAsyncResult result = Task.Run(() => caller.BeginInvoke(null, null));
           //caller.EndInvoke(result);
           Response.Write("The file has been uploaded and the Estimated Values should now be reflected in Rally.");
           }
    }

Как видите, у меня есть задача, указывающая на метод Main () и требующая его запуска() асинхронно, но я считаю, что я не понимаю, почему именно он не работает.Я также попробовал это с делегатом и получил тот же результат (как вы можете сказать из закомментированного кода).

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

Каков наилучший подход для этого (по скорости)?Любой вклад приветствуется и ценится.

...