我实现了进度条,以便在后台处理视频时向用户显示完成状态。它在单个实例上运行良好。但是当两个并发视频进程开始时就把它弄混了。
当两个不同的用户同时启动两个视频进程时,两个用户将看到混合的进度状态,有时来自视频进程 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/