.net - 防止竞争条件

标签 .net ajax asp.net-mvc-2 race-condition

我正在使用 MVC2 的内置 ajax 功能。基本上,用户键入一个搜索查询,然后在每次按键时显示一组查询结果。这在几乎所有情况下都可以正常工作,但有时服务器对单个响应有点慢,因此下一次击键的结果会先于上一次返回。当先前的击键结果集最终返回给客户端时,它将覆盖实际应该显示的较新搜索查询的结果。

我的代码或多或少遵循以下几行:

    <% using (Ajax.BeginForm("SearchUser", null, 
             new AjaxOptions() 
                    { UpdateTargetId = "findUserResults" }, 
             new { id = "findUserAjaxForm" })) {%>

每次击键都会提交此表单,从而在“findUserResults”元素中输出结果。

如何在仍然使用 MVC2 中提供的内置函数的同时防止显示较旧的结果?

最佳答案

您可以在每个请求中发送一个时间戳,并将其与结果一起返回,然后仅在时间戳晚于前一个请求时才显示结果。

new Date().getTime()

返回纪元开始后的毫秒数。

或者,您可以在每个页面上使用递增计数器。

关于.net - 防止竞争条件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4503321/

相关文章:

c# - TPL 数据流向所有消费者重复消息

C# - ScheduledTasks 类 - 如何指定 localhost?

php - 在后端准备数据还是在前端操作?

java - 部署java web应用程序后,如何在另一台机器上使用它

asp.net-mvc - Asp.Net MVC - 进修类(class)

jquery - 管理 jQuery 自定义事件

c# - 是否可以保护 appSettings 部分中的单个元素而不是整个部分?

.net - Entity Framework 代码优先 : One-to-One where PK is a FK

ajax - 带有正文的 Angular $http.delete 请求

asp.net-mvc - ASP.NET MVC 2 中的 Web.config 转换和额外的 Web.config 文件