Untitled
unknown
plain_text
2 years ago
1.4 kB
4
Indexable
using System; using System.Collections.Concurrent; using System.IO; using System.Threading; class Program { static ConcurrentQueue<string> dataQueue = new ConcurrentQueue<string>(); static object lockObject = new object(); static event Action<string> DataProduced; static int dataId = 0; static void Main(string[] args) { var producerThread = new Thread(ProducerThread); producerThread.Start(); DataProduced += ConsumerMethod; Console.WriteLine("Press Enter to stop the program."); Console.ReadLine(); producerThread.Join(); } static void ProducerThread() { var random = new Random(); while (true) { var data = GenerateRandomData(50 * 1024); // 50 KB DataProduced?.Invoke(data); Thread.Sleep(50000); // Sleep for 50 seconds } } static void ConsumerMethod(string data) { lock (lockObject) { var id = Interlocked.Increment(ref dataId); dataQueue.Enqueue($"{id},{data}"); Console.WriteLine($"Data with ID {id} added to the queue."); } } static string GenerateRandomData(int size) { var buffer = new byte[size]; var random = new Random(); random.NextBytes(buffer); return Convert.ToBase64String(buffer); } }
Editor is loading...