c# - asp.net如何区分服务器端的并发进度条请求

标签 c# asp.net

我实现了进度条,以便在后台处理视频时向用户显示完成状态。它在单个实例上运行良好。但是当两个并发视频进程开始时就把它弄混了。

当两个不同的用户同时启动两个视频进程时,两个用户将看到混合的进度状态,有时来自视频进程 1,有时来自另一个。

服务器端的视频进程使用静态变量启动。

public static MediaHandler _mhandler = new MediaHandler();

进度指示通过以下方式发送到页面

[WebMethod]
public static string GetProgressStatus()
{
    return Math.Round(_mhandler.vinfo.ProcessingCompleted, 2).ToString();
}

进度条每隔几秒发送一次进度请求。

现在我的问题是如何设置一次只能针对一个实例的 mediahandler 对象。

例如进度条01仅显示视频进程01的状态

进度条02只显示视频进程02的状态

最佳答案

我建议您为每个新的编码请求生成一个 Guid,它将在编码的整个生命周期中使用。我还建议 MediaHandler 不是静态的,并且你的 new() 为每个编码任务增加一个。 GetProgressStatus() 现在应该有一个 Guid 参数,以便您可以查询每个编码的进度。

您将需要持久性(数据库、静态列表、MSMQ...等)来跟踪您的 MediaHandler 实例和/或当前处理编码的进度(如果它是连续完成的)。

关于c# - asp.net如何区分服务器端的并发进度条请求,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11522178/

相关文章:

c# - 如何将 asp.net "Login" View 放在布局页面上,而不是 @Html.Actionlink 到单独的登录页面?

c# - Page.ClientScript.RegisterStartupScript 不工作

javascript - jQuery 数据表 - 如何设置列名称

asp.net - Azure存储容器权限无法设置

asp.net - 重新部署 ASP.NET Core MVC 网站后,Azure SQL 数据库列未更新

asp.net - 下载文件名为 ";"或 "#"的文件会破坏文件名

使用 foreach 循环的 C# List 或 Collection 初始值设定项

c# - 嵌套母版页和 .FindControl

c# - 为什么我们需要静态私有(private)数组来初始化其他非静态私有(private)数组字段?

c# - WPF ItemsSource 在代码隐藏中工作,但在 XAML 中不起作用