You cannot select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
90 lines
2.2 KiB
C#
90 lines
2.2 KiB
C#
using System;
|
|
using System.Collections.Generic;
|
|
using System.Linq;
|
|
using System.Text;
|
|
using System.Threading.Tasks;
|
|
using System.Collections.Concurrent;
|
|
using System.Windows.Forms;
|
|
|
|
namespace Rs.Framework
|
|
{
|
|
public class MessageQueue
|
|
{
|
|
ConcurrentQueue<MessageItem> _items;
|
|
ConcurrentQueue<MessageItem> _error;
|
|
|
|
private MessageQueue()
|
|
{
|
|
_items = new ConcurrentQueue<MessageItem>();
|
|
_error = new ConcurrentQueue<MessageItem>();
|
|
}
|
|
|
|
private static MessageQueue instance;
|
|
public static MessageQueue Instance
|
|
{
|
|
get
|
|
{
|
|
if(instance==null)
|
|
instance = new MessageQueue();
|
|
return instance;
|
|
}
|
|
}
|
|
|
|
public void Insert(string message)
|
|
{
|
|
if (_items.Count>1000)
|
|
_items.TryDequeue(out _);
|
|
MessageItem item = new MessageItem();
|
|
item.Time = DateTime.Now.ToString("HH:mm:ss fff");
|
|
item.Content=message;
|
|
_items.Enqueue(item);
|
|
}
|
|
|
|
public bool HaveMessage()
|
|
{
|
|
return (_items.Count + _error.Count) > 0;
|
|
}
|
|
|
|
public void Insert(MessageItem message)
|
|
{
|
|
_items.Enqueue(message);
|
|
}
|
|
|
|
public void Warn(string errInfo)
|
|
{
|
|
if (_error.Count > 1000)
|
|
_error.TryDequeue(out _);
|
|
MessageItem item = new MessageItem();
|
|
item.Time = DateTime.Now.ToString("HH:mm:ss fff");
|
|
item.Content = errInfo;
|
|
_error.Enqueue(item);
|
|
}
|
|
|
|
public MessageItem GetWarn()
|
|
{
|
|
if (_error.Count > 0)
|
|
{
|
|
if (_error.TryDequeue(out MessageItem item))
|
|
return item;
|
|
}
|
|
return null;
|
|
}
|
|
|
|
public MessageItem GetMessage()
|
|
{
|
|
if(_items.Count>0)
|
|
{
|
|
if (_items.TryDequeue(out MessageItem item))
|
|
return item;
|
|
}
|
|
return null;
|
|
}
|
|
}
|
|
|
|
public class MessageItem
|
|
{
|
|
public string Time { get; set; }
|
|
public string Content { get; set; }
|
|
}
|
|
}
|