简单的队列应用
using Newtonsoft.Json;
using System;
using System.Collections.Concurrent;
using System.Diagnostics;
using System.IO;
using System.Threading;
using System.Web;namespace TestQuenu
{/// <summary>/// 文件轉(zhuǎn)碼簡單隊(duì)列/// </summary>public class TransCodQuenuHelp{/// <summary>/// 待轉(zhuǎn)碼的文件隊(duì)列/// </summary>private static ConcurrentQueue<string> waitTransFileQuene = new ConcurrentQueue<string>();/// <summary>/// 系列化文件存放位置/// </summary>private static string waitTransFileSavePath = HttpContext.Current.Server.MapPath("~/1.txt");/// <summary>/// 等待毫秒數(shù)/// </summary>private const int waitTime = 300000;/// <summary>/// 日志來源/// </summary>private const string source = "";/// <summary>/// 日志名稱/// </summary>private const string logName = "";/// <summary>/// 初始化隊(duì)列/// </summary>public static void init(){initLog();ReadWaitTransFile();/*開啟線程用于定時(shí)任務(wù)*/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>/// 轉(zhuǎn)碼監(jiān)聽/// </summary>private static void ListenceTransCode(){while (true){if (!waitTransFileQuene.IsEmpty){string curTransFile = string.Empty;bool isSuc = waitTransFileQuene.TryDequeue(out curTransFile);if (isSuc){//轉(zhuǎn)碼try{Stopwatch stopwatch = new Stopwatch();stopwatch.Start();//doSomething();
stopwatch.Stop();TimeSpan timespan = stopwatch.Elapsed; // 獲取當(dāng)前實(shí)例測量得出的總時(shí)間string msg = string.Format("{0}成功,用時(shí){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>/// 從文件中讀取未轉(zhuǎn)碼的文件列表/// </summary>private static void ReadWaitTransFile(){if (File.Exists(waitTransFileSavePath)){string waitTransFile = File.ReadAllText(waitTransFileSavePath);waitTransFileQuene = JsonConvert.DeserializeObject<ConcurrentQueue<string>>(waitTransFile);}}/// <summary>/// 保存未轉(zhuǎn)碼的文件類別到文件/// </summary>public static void SaveWaitTransFile(){if (!waitTransFileQuene.IsEmpty){File.WriteAllText(waitTransFileSavePath, JsonConvert.SerializeObject(waitTransFileQuene));}}/// <summary>/// 添加新的任務(wù)/// </summary>/// <param name="fileName">文件全名</param>public static void Add(string fileName){waitTransFileQuene.Enqueue(fileName);}}
}
?
轉(zhuǎn)載于:https://www.cnblogs.com/tangchun/p/7930058.html
總結(jié)
- 上一篇: Unity3D之主角面朝方向一定区域内对
- 下一篇: 24点游戏详细截图介绍以及原型、Alph