C# 提交表单时执行后台处理
我有一个在用户提交表单时运行的操作方法 图像URL随模型一起传递 我希望能够对下载的图像执行一些处理,但我不希望处理过程中的延迟影响用户体验 那么,我如何在后台进行处理,同时愉快地提交表单呢?e、 g:C# 提交表单时执行后台处理,c#,.net,asp.net-mvc,C#,.net,Asp.net Mvc,我有一个在用户提交表单时运行的操作方法 图像URL随模型一起传递 我希望能够对下载的图像执行一些处理,但我不希望处理过程中的延迟影响用户体验 那么,我如何在后台进行处理,同时愉快地提交表单呢?e、 g: ProcessImage(imageUrl); //do this in the background without delaying user experience 在收到图像之前,您无法更改用户的页面 但是,在您对图像进行gt处理后,您可以在BackGroundWorker中执行所需
ProcessImage(imageUrl); //do this in the background without delaying user experience
在收到图像之前,您无法更改用户的页面
但是,在您对图像进行gt处理后,您可以在BackGroundWorker中执行所需的处理并提交页面。并让用户看到新的所需页面。在客户端上显示一个繁忙的屏幕,让用户知道他正在等待文件下载。您可以通过下载到单独的iframe并检查iframe的状态来实现这一点,您可以使用jQuery发布imageurl。完成后将调用您的回调
function ProcessImageUrl(imgurl)
{
$.post('<%= Url.Action("AjaxProcessImage","AjaxFunctions") %>'
, { url: imgurl }
, function (data) {
if (data.success) {
alert("I'm done processing the image");
}
else {
alert("Darn an error occurred: " + data.msg);
}
});
}
您可以使用后台工作程序。这可以作为异步方法完成吗?此方法的完成与用户无关。我只想在用户提交表单后的某个时刻进行图像处理。BackgroundWorker是专门为异步操作而设计的。您可以使用线程,但Backgroundworker是管理跨线程数据传输的简单方法。看看这个关于如何使用它的答案。。
public ActionResult AjaxProcessImage(string url)
{
try
{
ProcessImage(url);
}
catch(System.Exception ex)
{
return Json(
new
{
success = false,
msg = ex.Message
});
}
return Json(
new
{
success = true
});
}