服务器之家:专注于VPS、云服务器配置技术及软件下载分享
分类导航

PHP教程|ASP.NET教程|Java教程|ASP教程|编程技术|正则表达式|C/C++|IOS|C#|Swift|Android|VB|R语言|JavaScript|易语言|vb.net|

服务器之家 - 编程语言 - C# - C# ThreadPool之QueueUserWorkItem使用案例详解

C# ThreadPool之QueueUserWorkItem使用案例详解

2022-12-01 11:55小目标一个亿 C#

这篇文章主要介绍了C# ThreadPool之QueueUserWorkItem使用案例详解,本篇文章通过简要的案例,讲解了该项技术的了解与使用,以下就是详细内容,需要的朋友可以参考下

先看代码:

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
//设置可以同时处于活动状态的线程池的请求数目。
bool pool = ThreadPool.SetMaxThreads(8, 8);
if (pool) {
    ThreadPool.QueueUserWorkItem(o => this.DoSomethingLong("参数1"));
    ThreadPool.QueueUserWorkItem(o => this.DoSomethingLong("参数2"));
    ThreadPool.QueueUserWorkItem(o => this.DoSomethingLong("参数3"));
    ThreadPool.QueueUserWorkItem(o => this.DoSomethingLong("参数4"));
    ThreadPool.QueueUserWorkItem(o => this.DoSomethingLong("参数5"));
    ThreadPool.QueueUserWorkItem(o => this.DoSomethingLong("参数6"));
    ThreadPool.QueueUserWorkItem(o => this.DoSomethingLong("参数7"));
    ThreadPool.QueueUserWorkItem(o => this.DoSomethingLong("参数8"));
    ThreadPool.QueueUserWorkItem(o => this.DoSomethingLong("参数9"));
    ThreadPool.QueueUserWorkItem(o => this.DoSomethingLong("参数10"));
    ThreadPool.QueueUserWorkItem(o => this.DoSomethingLong("参数11"));
};

上面代码先设置线程池中最大并发量为8个,然后通过QueueUserWorkItem向线程池中添加11个方法,运行,输出结果:

C# ThreadPool之QueueUserWorkItem使用案例详解

可以看出,先运行了8个,当有一个任务结束后线程池中有空闲线程时,排队的下一个任务才会执行,

把最大并发量改成9试试:

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
{
    //设置可以同时处于活动状态的线程池的请求数目。
    bool pool = ThreadPool.SetMaxThreads(9, 9);
    if (pool) {
        ThreadPool.QueueUserWorkItem(o => this.DoSomethingLong("参数1"));
        ThreadPool.QueueUserWorkItem(o => this.DoSomethingLong("参数2"));
        ThreadPool.QueueUserWorkItem(o => this.DoSomethingLong("参数3"));
        ThreadPool.QueueUserWorkItem(o => this.DoSomethingLong("参数4"));
        ThreadPool.QueueUserWorkItem(o => this.DoSomethingLong("参数5"));
        ThreadPool.QueueUserWorkItem(o => this.DoSomethingLong("参数6"));
        ThreadPool.QueueUserWorkItem(o => this.DoSomethingLong("参数7"));
        ThreadPool.QueueUserWorkItem(o => this.DoSomethingLong("参数8"));
        ThreadPool.QueueUserWorkItem(o => this.DoSomethingLong("参数9"));
        ThreadPool.QueueUserWorkItem(o => this.DoSomethingLong("参数10"));
        ThreadPool.QueueUserWorkItem(o => this.DoSomethingLong("参数11"));
    };
}

运行结果:

C# ThreadPool之QueueUserWorkItem使用案例详解

果然没错,这次是先执行9个,当有空闲线程时再执行下一个

总结一下

QueueUserWorkItem:将方法排入队列以便执行。 此方法在有线程池线程变得可用时执行。

到此这篇关于C# ThreadPool之QueueUserWorkItem使用案例详解的文章就介绍到这了,更多相关C# ThreadPool之QueueUserWorkItem内容请搜索服务器之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持服务器之家!

原文链接:https://blog.csdn.net/wwwwerewrew/article/details/106049335

延伸 · 阅读

精彩推荐
  • C#Unity3D实现物体闪烁效果

    Unity3D实现物体闪烁效果

    这篇文章主要为大家详细介绍了Unity3D实现物体闪烁效果,类似霓虹灯、跑马灯、LED灯效果,具有一定的参考价值,感兴趣的小伙伴们可以参考一下...

    恬静的小魔龙5402022-07-19
  • C#C# PropertyInfo类案例详解

    C# PropertyInfo类案例详解

    这篇文章主要介绍了C# PropertyInfo类案例详解,本篇文章通过简要的案例,讲解了该项技术的了解与使用,以下就是详细内容,需要的朋友可以参考下...

    -小龙人7822022-12-01
  • C#新手必看Unity2019 2020保姆级安装教程

    新手必看Unity2019 2020保姆级安装教程

    这篇文章主要介绍了Unity2019 2020安装教程,本文分步骤通过图文并茂的形式给大家介绍Unity2019 2020安装方法,需要的朋友可以参考下...

    一直想要更好10912022-11-21
  • C#C#实现图片切割、切图、裁剪

    C#实现图片切割、切图、裁剪

    这篇文章主要为大家详细介绍了C#实现图片切割、切图、裁剪,具有一定的参考价值,感兴趣的小伙伴们可以参考一下...

    霍莉雪特9902022-03-08
  • C#C#实现简单的聊天窗体

    C#实现简单的聊天窗体

    这篇文章主要为大家详细介绍了C#实现简单的聊天窗体,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下...

    御弟謌謌6242022-11-25
  • C#C#创建一个小型Web Server(Socket实现)

    C#创建一个小型Web Server(Socket实现)

    这篇文章主要介绍了关于C#利用Socket实现创建一个小型Web Server的相关资料,文中通过示例代码介绍的很详细,需要的朋友可以参考借鉴,下面来一起看看吧...

    千一网络6752021-12-27
  • C#C#正则函数用法实例【匹配、替换、提取】

    C#正则函数用法实例【匹配、替换、提取】

    这篇文章主要介绍了C#正则函数用法,结合实例形式分析了C#基于正则的匹配、替换、提取相关操作技巧,需要的朋友可以参考下...

    pan_junbiao11432021-12-20
  • C#C#使用winform简单导出Excel的方法

    C#使用winform简单导出Excel的方法

    这篇文章主要介绍了C#使用winform简单导出Excel的方法,结合实例形式分析了WinForm操作Excel文件的写入导出等相关技巧,需要的朋友可以参考下...

    雨竹10712021-11-26