ThreadPool.QueueUserWorkItem

ThreadPool.QueueUserWorkItem(_ =>
{
HttpWebRequest request = (HttpWebRequest)WebRequest.Create("http://www.baidu/tag/模特?page=" + pageNum);
request.Credentials = System.Net.CredentialCache.DefaultCredentials;
HttpWebResponse response = (HttpWebResponse)request.GetResponse();
if (response.StatusCode == HttpStatusCode.OK)
{
using (StreamReader sr = new StreamReader(response.GetResponseStream()))
{
List<Uri> links = FetchLinksFromSource(sr.ReadToEnd());

}
}
});

  

时间: 2024-10-21 18:22:40

ThreadPool.QueueUserWorkItem的相关文章

ThreadPool.QueueUserWorkItem引发的血案,线程池异步非正确姿势导致程序闪退的问题

ThreadPool是.net System.Threading命名空间下的线程池对象.使用QueueUserWorkItem实现对异步委托的先进先出有序的回调.如果在回调的方法里面发生异常则应用程序会出现闪退.当然是指不处理那个异常的情况下.这不公司的CMS在生产环境频频出现闪退的情况.该死的是,原来用老机器配置不高的情况下没有出现过.换了更好的新机器后出现的. // // 摘要: // 将方法排入队列以便执行,并指定包含该方法所用数据的对象.此方法在有线程池线程变得可用时执行. // //

C# 多线程处理相关说明: WaitHandle,waitCallback, ThreadPool.QueueUserWorkItem

class TestThread { static void Main() { //使用WaitHandle静态方法阻止一个线程,直到一个或多个同步对象接收到信号 WaitHandle[] waitHandles = new WaitHandle[] { new ManualResetEvent(false), new ManualResetEvent(false) }; WaitCallback waitCallback = new WaitCallback(MyThreadWork); Wa

C#异步线程调用之ThreadPool.QueueUserWorkItem()

项目中有大文件传输需求,用户在网页端填好某个IP下的共享目录,服务端通过所填路径检测共享目录下的文件以供用户选择待传输的文件, 用户勾选相应文件后点击提交,服务端遂开始执行文件传输.所有的逻辑过程都在同一后台代码中,传文件的代码和其他业务代码都在同一线程中, 因而在文件过大时用户所在页面要等待很久很久,极大地影响用户体验,所以后来将传文件的过程放在新的线程中,以便提高页面响应效率. 将文件传输过程放在新线程中使用的是ThreadPool.QueueUserWorkItem()方法,调用方式是:

ThreadPool.QueueUserWorkItem的性能问题

在WEB开发中,为了降低页面等待时间提高用户体验,我们往往会把一些浪费时间的操作放到新线程中在后台执行. 简单的实现代码就是: //代码一 new Thread(()=>{ //do something }).Start(); 可是对于一个请求量大的网址这样做是非常不现实的--每个操作都要开启一个新线程,终于会因CPU不堪重负而使站点挂掉. 更好的做法是使用线程队列. 对于线程队列 ThreadPool.QueueUserWorkItem 非常多人应该都不陌生,下边看微软的解释: 将方法排入队列

Parallel.ForEach , ThreadPool.QueueUserWorkItem

1 using System; 2 using System.Collections.Generic; 3 using System.Linq; 4 using System.Text; 5 using System.Threading; 6 using System.Threading.Tasks; 7 8 namespace ParallelThreadPool 9 { 10 class Program 11 { 12 static void Main(string[] args) 13 {

多线程操作(ThreadPool.QueueUserWorkItem

主线程: 1 private void GetPolicy_Load(object sender, EventArgs e) 2 { 3 ////ThreadPool.QueueUserWorkItem(new WaitCallback(ThreadSP)); 4 try 5 { 6 MessageBox.Show("开始"); 7 ManualResetEvent[] _ManualEvents = new ManualResetEvent[2]; 8 _ManualEvents[0

多线程实现Thread.Start()与ThreadPool.QueueUserWorkItem两种方式对比

Thread.Start(),ThreadPool.QueueUserWorkItem都是在实现多线程并行编程时常用的方法.两种方式有何异同点,而又该如何取舍? 写一个Demo,分别用两种方式实现.观察各自的现象. 一个WorkMan class,其内的method doSomething()是每次异步线程调用的方法.该方法只是随机的让线程休眠一段时间. 1 public void doSomething() 2 { 3 OnBegin(new EventArgs()); 4 5 // some

ThreadPool.QueueUserWorkItem的用法,带参数和不带参数

1,带参数 ThreadPool.QueueUserWorkItem(delegate { PostDataWhenLoadData(); }); pubic static void update() { } 2.不带参数(参数类型一定要写成object) ThreadPool.QueueUserWorkItem(Checkupdate); public static void update(object data) { } 原文地址:https://www.cnblogs.com/xyyshi

ThreadPool.QueueUserWorkItem 方法 (WaitCallback)

说明:将方法排入队列以便执行,WaitCallback,表示要执行的方法.如果将方法成功排入队列,则为 true:否则为 false. 示例:addtest方法需要比较长的时间来响应,因此在button1_Click被点击以后,程序会失去响应,使用ThreadPool.QueueUserWorkItem 后,页面会继续响应其他时间,等addtest执行结束后,响应结果. <Window x:Class="WpfAppThread.Window1"    xmlns="h