如何实现MVC 4 Web App服务器端互斥锁
我不是MVC专家,但我相信这是可行的; 但是,我不知道如何在MVC 4中做到这一点。
对于测试,我使用的是使用VS 2012创建网站时提供的默认Web应用程序。
为简单起见,考虑HomeController.Index()被多个用户完全同时命中(例如3)。 我想执行一个互斥的方法,因为一次只执行一个; 因此迫使他们连续。 我不在乎什么顺序。 我知道有关阻止页面的警告,并且所有内容都应该是异步的,但为此我需要阻止很短的时间。
public class HomeController : Controller { private String dosomething() { String str; str = "SomeValue"; //<-- Will vary return str; } public ActionResult Index() { String str; // How do I do implement the following, preferably with a timeout to be safe Lock(dosomething); str = dosomething(); unLock(dosomething); return View(); }
如果要一次将执行限制为一个,那么您将需要一个静态锁定对象:
public class HomeController : Controller { private static object _lockobject = new object();
然后:
public ActionResult Index() { String str; lock (_lockobject) { str = dosomething(); } return View(); }
如果您需要超时,那么可以使用Monitor.TryEnter
而不是lock
:
上述就是C#学习教程:如何实现MVC 4 Web App服务器端互斥锁分享的全部内容,如果对大家有所用处且需要了解更多关于C#学习教程,希望大家多多关注—计算机技术网(www.ctvol.com)!
public ActionResult Index() { String str; if (Monitor.TryEnter(_lockobject, TimeSpan.FromSeconds(5))) { str = dosomething(); Monitor.Exit(_lockobject); } else str = "Took too long!"; return View(); }
本文来自网络收集,不代表计算机技术网立场,如涉及侵权请联系管理员删除。
ctvol管理联系方式QQ:251552304
本文章地址:https://www.ctvol.com/cdevelopment/961866.html