110,566
社区成员
发帖
与我相关
我的任务
分享
class MessageHolder
{
private MessageHolder()
{
}
private System.Collections.Concurrent.ConcurrentQueue<string> msgs = new System.Collections.Concurrent.ConcurrentQueue<string>();
public System.Collections.Concurrent.ConcurrentQueue<string> Messages => msgs;
private static MessageHolder _instance;
public static MessageHolder Instance
{
get
{
if (_instance == null)
{
_instance = new MessageHolder();
}
return _instance;
}
}
public event Action<string> MessagePushed;
public void Push(string msg)
{
msgs.Enqueue(msg);
if (MessagePushed != null)
{
MessagePushed(msg);
}
}
}
static void Main(string[] args)
{
MessageHolder.Instance.MessagePushed += new Action<string>(msg =>
{
Console.WriteLine(msg);
while (!MessageHolder.Instance.Messages.IsEmpty)
{
var msg1 = "";
MessageHolder.Instance.Messages.TryDequeue(out msg1);
if (!string.IsNullOrEmpty(msg1))
Console.WriteLine(msg1);
}
});
MessageHolder.Instance.Push("Show something..");
}
private void button1_Click(object sender, EventArgs e)
{
Test t = new Test();
//事件实现
t.act = new Action(()=> {
var str = t.GetText();
this.textBox1.Text = str;
});
//订阅事件
this.textBox1.BeginInvoke(t.act);
}
public class Test
{
public Action act;
//模拟获取信息
public string GetText()
{
return "123";
}
}
public class RunLog
{
public static event Action<string> MessageEvent;
public static void WriteLine(string text)
{
if(MessageEvent ! = null)
{
MessageEvent(text);
}
}
}