难道调用ThreadPool.QueueUserWorkItem()的时候,真是必须调用
发布时间:2020-12-16 09:08:17 所属栏目:asp.Net 来源:网络整理
导读:开门见山,下面的例子中通过调用ThreadPool.QueueUserWorkItem(WaitCallback callBack,object state)的方式实现异步调用: 1: class Program 2: { 3: static void Main( string [] args) 4: { 5: ListAction actions = new ListAction(); 6: actions.Add(()
开门见山,下面的例子中通过调用ThreadPool.QueueUserWorkItem(WaitCallback callBack,object state)的方式实现异步调用: 1: class Program 3: static void Main(string[] args) 5: List<Action> actions = new List<Action>();
7: actions.Add(() => Console.WriteLine("A2"));
9: actions.Add(() => Console.WriteLine("A4"));
11: foreach (var action in actions) 13: ThreadPool.QueueUserWorkItem(state => action(),null);
15:? 17: }
这次能够输出正确的结果: 我们也看到很多人确实是这么做的。但是如果真是必须这样的话,这样的编程方式很难让我接受,不知道大家有何高见。 在老赵的提示下,醒悟过来:由于被置于ThreadPool中的操作时异步的,还没有来的执行的时候,action已经被for循环改变,永远是同一个action对象! 呵呵,脑袋有时候有点转不过弯! 所以正确的写法是: 3: var a = action;
5: } 作者:Artech 出处:http://artech.cnblogs.com 本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利。 (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
相关内容
- asp.net-web-api – Structure Map无参数构造函数错误
- asp.net – 启用Application Insights会使Web应用程序挂起
- 有没有办法从ASP.NET访问IIS内核缓存?
- asp.net-mvc – 如何对剃刀视图进行单元测试
- asp经典 – 经典的asp cint
- asp.net-mvc – Bower,Grunt和Yeoman如何适应Visual Studio
- asp.net-mvc – MVC数据注释范围验证无法正常工作
- asp.net-mvc – MVC Razor – 如何向自己提交表单
- asp.net-mvc – ViewBag和ViewData也是asp.net mvc中状态管
- asp.net – 如何连接RDLC表达式中的值?
推荐文章
站长推荐
- asp-classic – Classic ASP中的Response.Flush导
- asp.net – IIS HTTP错误403.1 – 禁止访问:拒绝
- asp.net-mvc – ASP.Net MVC“Magic Strings” –
- 如何使用ASP.NET MVC设计CSS?
- 从客户端调用asp.net ajax服务器控件的公共函数
- 如何在asp.net上模拟同时的web请求?
- asp.net mvc更新多条记录
- asp.net-mvc-3 – ModelState.AddModelError不显
- 如何将ASP.NET网站编译成单个DLL文件?
- ASP.NET Response.Redirect使用302而不是301
热点阅读