欢迎访问 生活随笔!

生活随笔

当前位置: 首页 > 编程资源 > 编程问答 >内容正文

编程问答

简单的队列应用

发布时间:2025/3/15 编程问答 23 豆豆
生活随笔 收集整理的这篇文章主要介绍了 简单的队列应用 小编觉得挺不错的,现在分享给大家,帮大家做个参考.
using Newtonsoft.Json; using System; using System.Collections.Concurrent; using System.Diagnostics; using System.IO; using System.Threading; using System.Web;namespace TestQuenu {/// <summary>/// 文件转码简单队列/// </summary>public class TransCodQuenuHelp{/// <summary>/// 待转码的文件队列/// </summary>private static ConcurrentQueue<string> waitTransFileQuene = new ConcurrentQueue<string>();/// <summary>/// 系列化文件存放位置/// </summary>private static string waitTransFileSavePath = HttpContext.Current.Server.MapPath("~/1.txt");/// <summary>/// 等待毫秒数/// </summary>private const int waitTime = 300000;/// <summary>/// 日志来源/// </summary>private const string source = "";/// <summary>/// 日志名称/// </summary>private const string logName = "";/// <summary>/// 初始化队列/// </summary>public static void init(){initLog();ReadWaitTransFile();/*开启线程用于定时任务*/Thread thread = new Thread(new ThreadStart(ListenceTransCode));thread.Start();thread.IsBackground = true;}/// <summary>/// 初始化日志/// </summary>private static void initLog(){if (!EventLog.SourceExists(source)){EventLog.CreateEventSource(source, logName);}}/// <summary>/// 转码监听/// </summary>private static void ListenceTransCode(){while (true){if (!waitTransFileQuene.IsEmpty){string curTransFile = string.Empty;bool isSuc = waitTransFileQuene.TryDequeue(out curTransFile);if (isSuc){//转码try{Stopwatch stopwatch = new Stopwatch();stopwatch.Start();//doSomething(); stopwatch.Stop();TimeSpan timespan = stopwatch.Elapsed; // 获取当前实例测量得出的总时间string msg = string.Format("{0}成功,用时{1}分钟", curTransFile, timespan.TotalMinutes);EventLog.WriteEntry(source, msg, EventLogEntryType.Information);}catch (Exception ex){EventLog.WriteEntry(source, ex.Message, EventLogEntryType.Error);}}}else{Thread.Sleep(waitTime);}}}/// <summary>/// 从文件中读取未转码的文件列表/// </summary>private static void ReadWaitTransFile(){if (File.Exists(waitTransFileSavePath)){string waitTransFile = File.ReadAllText(waitTransFileSavePath);waitTransFileQuene = JsonConvert.DeserializeObject<ConcurrentQueue<string>>(waitTransFile);}}/// <summary>/// 保存未转码的文件类别到文件/// </summary>public static void SaveWaitTransFile(){if (!waitTransFileQuene.IsEmpty){File.WriteAllText(waitTransFileSavePath, JsonConvert.SerializeObject(waitTransFileQuene));}}/// <summary>/// 添加新的任务/// </summary>/// <param name="fileName">文件全名</param>public static void Add(string fileName){waitTransFileQuene.Enqueue(fileName);}} }

 

转载于:https://www.cnblogs.com/tangchun/p/7930058.html

总结

以上是生活随笔为你收集整理的简单的队列应用的全部内容,希望文章能够帮你解决所遇到的问题。

如果觉得生活随笔网站内容还不错,欢迎将生活随笔推荐给好友。