小编Fai*_*aiz的帖子

C#中如何避免线程完成?

我有一个用 C# 编写的 RabbitMQ 客户端程序。虽然应用程序在基于控制台的应用程序中工作(因为执行被 Console.ReadLine 阻止),但它在基于 Windows 窗体的应用程序中不起作用。在 Windows 窗体应用程序中,执行不会等待 Console.ReadLine 并在完成时终止。我正在寻找解决方案,让我的侦听器持续监视来自服务器的新消息而不被终止。这是客户端代码:

    try {
            var factory = new ConnectionFactory() { HostName = "xxx" , UserName ="xxx", Password="xxx"};
            using(var connection = factory.CreateConnection())
            using(var channel = connection.CreateModel())
            {
                channel.ExchangeDeclare(exchange: "call_notify", type: "fanout");

                var queueName = channel.QueueDeclare().QueueName;
                channel.QueueBind(queue: queueName,
                                  exchange: "call_notify",
                                  routingKey: "");

                var consumer = new EventingBasicConsumer(channel);
                consumer.Received += (model, ea) =>
                {
                    var body = ea.Body;
                    var message = Encoding.UTF8.GetString(body);
                    Console.WriteLine(message);
                };
                channel.BasicConsume(queue: queueName,
                                     autoAck: true,
                                     consumer: consumer);

                Console.WriteLine(" Press …
Run Code Online (Sandbox Code Playgroud)

c# multithreading rabbitmq

4
推荐指数
1
解决办法
1317
查看次数

标签 统计

c# ×1

multithreading ×1

rabbitmq ×1