示例#1
0
        public static Consumer CreateConsumerNewThread(StringQueue sq, string name)
        {
            var consumer = new Consumer(sq);
            var t1       = new Thread(() => consumer.Consume());

            t1.Name = name;
            t1.Start();
            return(consumer);
        }
示例#2
0
        static void Main(string[] args)
        {
            // Eventos para la gestión de excepciones.
            // Esta es la gestión mínima que se debería hacer siempre
            // Cuando existen varios hilos (multi-threading), es una forma
            // sencilla de tratar todas las excepciones que se produzcan,
            // sin tener que recurrir al try/catch/finally en varios puntos
            // del código.

            Application.ThreadException += Application_ThreadException;
            AppDomain.CurrentDomain.UnhandledException += CurrentDomain_UnhandledException;

            Thread.CurrentThread.Name = "Proceso principal";

            using (var sq = StringQueue.CreateStringQueue(
                       new List <string> {
                "A0", "B0", "C0", "D0", "E0",
                "A1", "B1", "C1", "D1", "E1",
                "A2", "B2", "C2", "D2", "E2",
                "A3", "B3", "C3", "D3", "E3",
                "A4", "B4", "C4", "D4", "E4",
                "A5", "B5", "C5", "D5", "E5",
                "A6", "B6", "C6", "D6", "E6",
                "A7", "B7", "C7", "D7", "E7",
                "A8", "B8", "C8", "D8", "E8",
                "A9", "B9", "C9", "D9", "E9"
            }))
            {
                Consumer.CreateConsumerNewThread(sq, "Consumer 1");
                Consumer.CreateConsumerNewThread(sq, "Consumer 2");

                // Para verificar que los dos threads anteriores están esperando
                // que existan de nuevo elementos en la cola

                Thread.Sleep(1000);

                for (var i = 0; i < 20; i++)
                {
                    sq.Enqueue("TEST" + i.ToString());
                }
            }
        }
示例#3
0
 private Consumer(StringQueue sq)
 {
     StringQueue = sq;
 }