У меня есть веб-приложение, которое выполняет две основные функции: 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 () и требующая его запуска() асинхронно, но я считаю, что я не понимаю, почему именно он не работает.Я также попробовал это с делегатом и получил тот же результат (как вы можете сказать из закомментированного кода).
Я нашел похожие ответы, но большинство из которых имеют дело с асинхронным методом в том же классе.Я исследовал заранее, но не нашел что-то специально для того, что я прошу.
Каков наилучший подход для этого (по скорости)?Любой вклад приветствуется и ценится.