我想弄清楚如何创建一个多线程生产者/消费者程序,其中生产基于外部事件。
我已经建立了一个同步队列,它有 2 个线程循环,一个用于入队,一个用于出列并写入文件,具有经典模式:
Class SyncQueue
{
...
producerThread = new Thread(new ThreadStart(StartProducer));
consumerThread = new Thread(new ThreadStart(StartConsumer));
...
public void Start()
{
producerThread.Start();
consumerThread.Start();
}
public void StartProducer()
{
while (!stop)
{
//wait for an external event to happen
//Data data = eventHandler() : How to wait for an event and get?
Enqueue(data);
}
}
}
另一方面,我在另一个类中有一个独立处理外部事件的方法。
public void OnExternalEvent()
{
//event occured
//how to notify and send data to the producer thread?
}
我的问题不是关于生产者/消费者模式,而是关于整合其中的事件。
我发布的代码只是为了让我的问题更清楚,我在评论中添加了两个具体问题。
如果有人能告诉我该怎么做,我将不胜感激。我是 C# 新手,没有很强的事件处理背景。