私有队列

时间:2017-12-17 00:38:26

标签: c# .net

我是编程新手并且遇到问题。 我不知道为什么邮件没有出现在私人队列中......

这是我正在处理的代码,但安静无法工作,虽然我创建了另一个没有异步的msmq应用程序,但是这里出现了问题。

class Program
{
   static MessageQueue queue = new MessageQueue();

    static void Main(string[] args)
    {



        queue.Path = @".\Private$\NPQueue-Fall17-3"; 
         queue.Formatter=new XmlMessageFormatter();
        if (MessageQueue.Exists(queue.Path)==false)
            MessageQueue.Create(queue.Path);
        MessageQueueTransaction trans = new MessageQueueTransaction();
        try {
            trans.Begin();   
            queue.Send("hi1");
            queue.Send("hi2");
            throw new Exception("error");
            queue.Send("hi3");
            queue.Send("hi4");
           trans.Commit();

            Console.WriteLine(queue.Receive().Body);
            Console.WriteLine(queue.Receive().Body);
            Console.WriteLine(queue.Receive().Body);
            Console.WriteLine(queue.Receive().Body);
            Console.Read();


        }
        catch
        {
           trans.Abort();
        }
        queue.ReceiveCompleted += queue_ReceieveCompleted;
        queue.BeginReceive();
        Console.Read();
        trans.Commit();

    }

    private static void queue_ReceieveCompleted(object sender, ReceiveCompletedEventArgs e)
    {
        var msg = queue.EndReceive(e.AsyncResult);
        Console.WriteLine(msg.Body);
        queue.BeginReceive();  //bar bar read kelye lagaya hai
    }
}

}

1 个答案:

答案 0 :(得分:0)

您已将一次投掷硬编码到交易中。这将导致例外,这将导致中止。交易中止后,您实际上并没有发送任何内容。