asp.net-mvc – 如何判断MVC AsyncController线程是否在ASP.NET池或I / O完成端口
|
我有一个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 – 什么时候Response.IsClientConnected慢?
- asp.net – 我使用什么Active Directory字段来唯一标识用户
- asp.net-mvc – 在asp.net mvc中,单个项目与多个项目实现的
- asp.net – SignalR Autofac OWIN:为什么GlobalHost.Conne
- asp.net-mvc-3 – 使用connectionStringName进行数据库日志
- asp.net – 如何使用EntityFramework种子数据代码第一次迁移
- 如何使用asp.net webapi获取Json Post Values
- asp.net – 来自web.config的Asp .Net自定义成员资格参数
- asp.net-mvc-3 – 如何在.NET MVC3中注入用于验证的依赖关系
- asp-classic – 从头开始在Visual Studio 2010中创建经典的
- asp.net-core – TagHelper,用于将路由值作为链接
- asp.net-mvc – 如何进入MVC4源代码,而无需构建程
- asp.net – 如何添加.aspx页面到现有的MVC 4项目
- asp.net – IE 8和客户端缓存
- asp.net-mvc-2 – 如何在ASP.NET MVC2中为Html.L
- Asp.Net 文件操作基类(读取,删除,批量拷贝,删除,
- asp.net – IE bug无效源HTML5音频 – 解决方法
- asp.net – 可以在Web.config中配置一个位置,只允
- asp.net-mvc – 如何在不给每个控制器放置注释的
- asp.net核心 – Asp.Net核心从url获取RouteData值
