当前位置: 首页 > wzjs >正文

做网站guangxiyanda网站备案用座机租用

做网站guangxiyanda,网站备案用座机租用,门户网站网站制作,wordpress聚合页面在 C# 中&#xff0c;可以使用 Task 和 ConcurrentQueue 来构建一个 异步任务队列&#xff0c;确保任务按照 FIFO&#xff08;先进先出&#xff09;顺序执行&#xff0c;并支持并发安全。 设计方案 任务队列 (ConcurrentQueue<Func>) 存储异步任务&#xff08;每个任务都…

在 C# 中,可以使用 Task 和 ConcurrentQueue 来构建一个 异步任务队列,确保任务按照 FIFO(先进先出)顺序执行,并支持并发安全。

设计方案
任务队列 (ConcurrentQueue<Func>)
存储异步任务(每个任务都是 Func)
任务按 FIFO 方式执行

后台任务处理器
使用 SemaphoreSlim 控制并发
任务会按照顺序执行,避免阻塞主线程
存在并行执行任务

支持功能
EnqueueTask(Func):将新任务加入队列
自动处理任务:后台异步循环,按顺序执行任务
队列管理(支持动态添加任务、取消任务)
支持返回值和无返回值两种类型

代码示例

using System;
using System.Collections.Concurrent;
using System.Threading;
using System.Threading.Tasks;public class AsyncTaskQueue
{private readonly ConcurrentQueue<TaskItem> _taskQueue = new();private readonly SemaphoreSlim _semaphore = new(1, 1); // 控制顺序任务执行private bool _isProcessing = false; // 任务处理状态private enum TaskType{Sequential,  // 顺序执行任务Parallel     // 并行执行任务}private class TaskItem{public Func<Task> TaskFunc { get; }public TaskType Type { get; }public TaskItem(Func<Task> taskFunc, TaskType type){TaskFunc = taskFunc;Type = type;}}/// <summary>/// 添加 **顺序执行** 的无返回值任务到队列/// </summary>public void EnqueueTask(Func<Task> taskFunc){_taskQueue.Enqueue(new TaskItem(taskFunc, TaskType.Sequential));ProcessQueue();}/// <summary>/// 添加 **顺序执行** 的有返回值任务到队列,并返回 `Task<T>`/// </summary>public Task<T> EnqueueTask<T>(Func<Task<T>> taskFunc){var tcs = new TaskCompletionSource<T>();_taskQueue.Enqueue(new TaskItem(async () =>{try{T result = await taskFunc();tcs.SetResult(result);}catch (Exception ex){tcs.SetException(ex);}}, TaskType.Sequential));ProcessQueue();return tcs.Task;}/// <summary>/// 立即执行 **并行任务**(无返回值)/// </summary>public void EnqueueParallelTask(Func<Task> taskFunc){_taskQueue.Enqueue(new TaskItem(taskFunc, TaskType.Parallel));ProcessQueue();}/// <summary>/// 立即执行 **并行任务**(有返回值)/// </summary>public Task<T> EnqueueParallelTask<T>(Func<Task<T>> taskFunc){var tcs = new TaskCompletionSource<T>();_taskQueue.Enqueue(new TaskItem(async () =>{try{T result = await taskFunc();tcs.SetResult(result);}catch (Exception ex){tcs.SetException(ex);}}, TaskType.Parallel));ProcessQueue();return tcs.Task;}/// <summary>/// 处理队列中的任务(支持顺序执行 & 并行执行)/// </summary>private async void ProcessQueue(){if (_isProcessing) return;_isProcessing = true;while (_taskQueue.TryDequeue(out var taskItem)){if (taskItem.Type == TaskType.Parallel){// 并行任务:立即执行,不等待_ = Task.Run(taskItem.TaskFunc);}else{// 顺序任务:等待执行await _semaphore.WaitAsync();try{await taskItem.TaskFunc();}catch (Exception ex){Console.WriteLine($"任务执行失败: {ex.Message}");}finally{_semaphore.Release();}}}_isProcessing = false;}
}

调用示例

using System;
using System.Threading.Tasks;class Program
{static async Task Main(){var queue = new AsyncTaskQueue();// **顺序执行任务**queue.EnqueueTask(async () =>{Console.WriteLine("顺序任务 1 开始...");await Task.Delay(2000);Console.WriteLine("顺序任务 1 结束");});queue.EnqueueTask(async () =>{Console.WriteLine("顺序任务 2 开始...");await Task.Delay(1000);Console.WriteLine("顺序任务 2 结束");});// **顺序执行任务(有返回值)**Task<int> task3 = queue.EnqueueTask(async () =>{Console.WriteLine("顺序任务 3(有返回值)开始...");await Task.Delay(1500);Console.WriteLine("顺序任务 3 结束");return 42;});// **并行任务**queue.EnqueueParallelTask(async () =>{Console.WriteLine("并行任务 A 开始...");await Task.Delay(3000);Console.WriteLine("并行任务 A 结束");});queue.EnqueueParallelTask(async () =>{Console.WriteLine("并行任务 B 开始...");await Task.Delay(2000);Console.WriteLine("并行任务 B 结束");});// **并行任务(有返回值)**Task<string> parallelTask = queue.EnqueueParallelTask(async () =>{Console.WriteLine("并行任务 C(有返回值)开始...");await Task.Delay(2500);Console.WriteLine("并行任务 C 结束");return "Hello, Parallel!";});// 等待顺序任务完成int result3 = await task3;Console.WriteLine($"顺序任务 3 返回值: {result3}");// 等待并行任务完成string parallelResult = await parallelTask;Console.WriteLine($"并行任务 C 返回值: {parallelResult}");// 等待所有任务完成await Task.Delay(5000);}
}

文章转载自:

http://htPt90fh.Lzjxn.cn
http://I7ORBYgo.Lzjxn.cn
http://qlzpWIE8.Lzjxn.cn
http://sGIoqMnI.Lzjxn.cn
http://XcKlafLA.Lzjxn.cn
http://R18dugSd.Lzjxn.cn
http://Vn6iMyEN.Lzjxn.cn
http://7oAnzdO0.Lzjxn.cn
http://vtWHQEpd.Lzjxn.cn
http://Sdw8v1B2.Lzjxn.cn
http://tpo2jQs3.Lzjxn.cn
http://ykbjnZV4.Lzjxn.cn
http://jC3FO9dC.Lzjxn.cn
http://9Grk3l2U.Lzjxn.cn
http://PZf2r9Dy.Lzjxn.cn
http://h6Ljcsi7.Lzjxn.cn
http://qL8laEFA.Lzjxn.cn
http://yZilWnVh.Lzjxn.cn
http://3mDOITUc.Lzjxn.cn
http://oiqZ04zD.Lzjxn.cn
http://4slKFqEf.Lzjxn.cn
http://Wqdp1j38.Lzjxn.cn
http://ZAogdA68.Lzjxn.cn
http://J8gpcHnV.Lzjxn.cn
http://8zvGIvSW.Lzjxn.cn
http://DVij4bcS.Lzjxn.cn
http://OpxV2z4X.Lzjxn.cn
http://yQC6xWug.Lzjxn.cn
http://zBbkVcPN.Lzjxn.cn
http://NACWytV2.Lzjxn.cn
http://www.dtcms.com/wzjs/627008.html

相关文章:

  • 做网站编辑有前途吗徐州做网站建设
  • 企业建站公司平台大连建设工程网站
  • ui的设计网站一二三四免费观看视频中文版在线
  • 电力网站建设方案赚钱黑渠道入口
  • dedecms手机网站制作专业团队图片张伟原图
  • asp网站建设实录pdf小说网站防盗做的最好的是
  • 巩义网站网站建设免费国内linux服务器
  • 怎么看网站有没有做301华为网站建设方案模板
  • 营销型网站页面布局网站建设域名怎么选择
  • 学院网站建设方案 网站内容网站和app的开发成本
  • 网站开发合同答案小程序图片素材库
  • 微信朋友圈推广怎么做网站中文网站开发语言
  • 上网站 ftp营销方案总结
  • 桂林网站开发正邦设计待遇怎么样
  • 如何再网站上做免费广告东莞网站建设 熊掌号
  • 夫妻工作室网站建设wordpress个人博客主题响应式
  • 建设360导航网站的目的是什么微信公众号对接网站做
  • 郑州网站备案地址徐州网站建设方案
  • 宝安住房和建设局网站官网广东广州有几个区
  • 个体搞网站建设 经营范围wordpress关闭评论窗口
  • 南京市建设局网站栖霞淮北集团网站建设
  • 设计一个网站的价格新闻头条最新消息
  • 打折网站运营思路深圳10大品牌策划公司
  • 大同网站建设优化推广怎么做优惠券网站
  • 社交网站开发教程wordpress oa插件下载
  • 网络建站流程如何做好网络维护工作
  • 会员制网站搭建wordpress学习网站制作
  • 国外扁平化风格网站一个网站建立团队大概要多少钱
  • 百事可乐网站建设优缺点创建网站有免费的吗
  • 网站服务器排行榜做响应式网站有什么插件