using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.IO;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
namespace LogTest
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}
Queue<string> logQ = new Queue<string>();
DateTime begin = DateTime.Now;
bool bStop = false;
private int logNum = 0;
private void btnStart_Click(object sender, EventArgs e)
{
string logs = "";
while(!bStop)
{
if ((DateTime.Now - begin).TotalSeconds >= 5)
{
SaveLogs(ref logs);
begin = DateTime.Now;
}
System.Threading.Thread.Sleep(100);
Application.DoEvents();
}
SaveLogs(ref logs);
}
private void SaveLogs(ref string logs)
{
try
{
string tmp = logs;
if (logQ.Count>0)
{
lock(logQ)
{
logQ.ToList().ForEach(s => tmp += s + Environment.NewLine) ;
logQ.Clear();
StreamWriter sw = new StreamWriter("log.txt", true);
sw.WriteLine(tmp.Trim());
sw.Close();
logs = "";
}
}
}
catch (Exception)
{
}
}
private void btnGenerate_Click(object sender, EventArgs e)
{
logNum += 1;
logQ.Enqueue("LOG " +logNum.ToString());
}
private void btnStop_Click(object sender, EventArgs e)
{
bStop = true;
}
}
}
C# 队列写log方法
最新推荐文章于 2024-01-20 11:12:42 发布