如何在MVC中长时间运行的进程中获取UI的反馈?

时间:2015-04-15 22:22:14

标签: asp.net asp.net-mvc async-await

我有一个大型照片文件夹(36Gb),我想重命名,移动和检查重复项。我正在首先处理文件的重命名和移动。我创建了类似于控制台应用程序的东西,虽然有效,但没有提供任何机制来向UI提供进度反馈,所以在完成之前这似乎会挂起差不多一个小时。

如果我想在MVC中执行此操作,我如何利用api端点或控制器操作来触发服务并在每次重命名和移动文件时获得响应?我希望能够计算文件数量,然后让UI更新为2323的10000。

1 个答案:

答案 0 :(得分:0)

如果您不想在网络应用中进行重大更改,并且您可以在服务器上运行控制台应用,那么您可以进行简单的黑客攻击。

控制台应用可以在文件中写入状态。在Web应用程序中读取文件并以适当的格式显示它。对于不断更新,控制台应用程序必须经常写入当前状态。使用ajax,您可以每隔x秒更新一次用户。

您可以使用如下所示的json格式

{
    "Total_Files" : xxx
    "Processed_Files" : yyy
    "Last_Operations" : 
         [ 
             "File x is renamed",
             "File x is duplicate. deleted"
         ]//"x amount of last operation you want to display" 
}