asp.net-mvc – 如何判断MVC AsyncController线程是否在ASP.NET
我有一个ASP.NET MVC 3应用程序.我正在使用AsyncController并创建新线程.有没有办法验证我使用的是I / O完成端口而不是ASP.NET线程池?
Thread.CurrentThread或其他地方是否有属性我可以检查以确定线程的运行位置? 这是我正在执行的代码示例 public class HomeController : AsyncController { public void CarsComplexAsync(string make) { AsyncManager.OutstandingOperations.Increment(2); System.Diagnostics.Debug.WriteLine("Enter CarsComplexAsync: " + DateTime.Now); Action getCarsAsync = () => { List<Car> cars = CarService.GetCars(make); AsyncManager.Parameters["cars"] = cars; AsyncManager.OutstandingOperations.Decrement(); }; Action getTrucksAsync = () => { List<Car> trucks = CarService.GetTrucks(make); AsyncManager.Parameters["trucks"] = trucks; AsyncManager.OutstandingOperations.Decrement(); }; getCarsAsync.BeginInvoke(null,null); getTrucksAsync.BeginInvoke(null,null); } public ActionResult CarsComplexCompleted(List<Car> cars,List<Car> trucks) { cars.AddRange(trucks); return View(cars); } public static class CarService { private static List<Car> _cars = new List<Car> { new Car{ Make = "Ford",Model = "F-150",Color = "White",Year = 2010},new Car{ Make = "Chevy",Model = "Camero",Color = "Black",Year = 1984},new Car{ Make = "Peugeot",Model = "406 Coupe",new Car{ Make = "Dodge",Model = "Charger",Color = "Red",Year = 1974} }; public static List<Car> GetCars(string model) { Thread.Sleep(5000); List<Car> cars = _cars; return cars; } public static List<Car> GetTrucks(string make) { Thread.Sleep(5000); List<Car> cars = _cars; return cars; } } 解决方法
不是没有看到你的代码,因为它取决于你正在使用的API. 例如,HttpWebRequest.BeginGetResponse使用I / O完成端口.另一方面,如果您有一些CPU密集型任务,您正在手动创建的单独线程上运行,那么您不使用I / O完成端口.
完成端口意味着没有线程,因为如果有一个线程,就好像你在一个线程上运行一样.基本上I / O完成端口的工作方式是你启动一些I / O操作并注册CP,然后释放所有线程并返回.在执行操作期间,应用程序中没有与之关联的线程.一旦操作完成,就会发信号通知端口,并从池中删除/绘制一个线程以结束请求. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
- asp.net – 需要有关选择数据访问方法的建议
- asp.net-mvc – 从MVC Controller导出到CSV,View在页面上显
- asp.net-mvc – 我可以从Model类(而不是控制器)添加ModelSt
- 在ASP.NET中开发SharePoint Web部件
- asp.net – Chrome在成功的文件下载(200状态)上显示“已取消
- asp.net – 在自己的AppPool中运行每个网站有哪些优点和/或
- asp.net – 防止加载MicrosoftAjaxWebForms.debug.js
- asp.net – 如何在url搜索词中处理web.config
- Asp.Net和Asp.Net MVC中的Ajax之间的区别
- asp.net mvc 原理
- asp.net – 在Selectedindexchanged事件中选择下
- asp.net-core-mvc – 如何考虑请求和响应范围标头
- 尝试使用asp.net流式传输PDF文件会产生“损坏的文
- 我可以使用ASP.NET Core仅针对.NET 4.6.1吗?
- asp.net-mvc – ASP.NET MVC获取View的最后修改日
- asp.net – 自动将视频格式转换为Flash Video
- asp.net-mvc – 在MVC中结合JS / CSS的任何经验?
- asp.net – UpdatePanel中的DropDownList
- asp.net-mvc – WebAPI控制器中的MVC路由
- asp.net-mvc – 具有html帮助的布尔隐藏和隐藏