当前位置: 首页>>代码示例>>C#>>正文


C# MessageQueue.PeekById方法代码示例

本文整理汇总了C#中System.Messaging.MessageQueue.PeekById方法的典型用法代码示例。如果您正苦于以下问题:C# MessageQueue.PeekById方法的具体用法?C# MessageQueue.PeekById怎么用?C# MessageQueue.PeekById使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在System.Messaging.MessageQueue的用法示例。


在下文中一共展示了MessageQueue.PeekById方法的4个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C#代码示例。

示例1: BL_InitSeats

        private void BL_InitSeats()
        {
            var queue = new MessageQueue(_queueName){
                Formatter = new XmlMessageFormatter(new[] { typeof(Seat) })
            };

            if (!MessageQueue.Exists(_queueName))
            {
                using (queue = MessageQueue.Create(_queueName))
                {
                    queue.Label = "CinemaSeats";
                }
            }
            
            Task.Factory.StartNew(() => PeekMessages(queue))
                .ContinueWith(x =>
                {
                    var enumerable = x.Result;
                    var seats = enumerable as IList<LabelIdMapping> ?? enumerable.ToList();

                    var dbTickets = GetSqlTickets();

                    if (seats.Count == 0 && dbTickets.Count == 0)
                    {
                        UI_InitSeats();
                        return;
                    }

                    //deserialize messsages
                    var messages = seats.Select(labelIdMapping => queue.PeekById(labelIdMapping.Id).Body as Seat).ToList();

                    for (var i = 0; i < 30; i++)
                    {
                        for (var j = 0; j < 40; j++)
                        {
                            var bookedSeat = messages.FirstOrDefault(n => n.Number == j && n.Row == i)
                                            ?? dbTickets.FirstOrDefault(n => n.Number == j && n.Row == i)
                                            ?? new Seat();

                            //TODO: change to dynamic BookingState
                            bookedSeat.ViewModel = DrawSeat(bookedSeat.BookingState);
                            canvas.Children.Add(bookedSeat.ViewModel);
                            Canvas.SetTop(bookedSeat.ViewModel, i*10);
                            Canvas.SetLeft(bookedSeat.ViewModel, j*10);

                            _room[i, j] = bookedSeat;
                        }
                    }
                }, TaskScheduler.FromCurrentSynchronizationContext());
        }
开发者ID:rock-walker,项目名称:bookingMsmqClient,代码行数:50,代码来源:MainWindow.xaml.cs

示例2: MessageDetailsModel

        public MessageDetailsModel(string messageId, string queuePath)
        {
            var additionalDetails = new List<MessageDetail>();
            using (var messageQueue = new MessageQueue(queuePath))
            {
                messageQueue.MessageReadPropertyFilter.ClearAll();
                messageQueue.MessageReadPropertyFilter.Body = true;
                foreach (IMessageExtension messageExtension in MessageExtensions.GetMessageExtensions())
                {
                    messageExtension.CustomizeMessagePropertyFilter(messageQueue.MessageReadPropertyFilter);
                }

                try
                {
                    using (var message = messageQueue.PeekById(messageId))
                    {
                        this.Body = new StreamReader(message.BodyStream).ReadToEnd();
                        foreach (IMessageExtension messageExtension in MessageExtensions.GetMessageExtensions())
                        {
                            additionalDetails.AddRange(messageExtension.GetMessageDetails(message));
                        }
                    }
                }
                catch (InvalidOperationException ex)
                {
                    this.Body = "No message with the id " + messageId + " exists. Probably it was consumed few moments ago.\n"
                        + "Exception details: " + ex.ToString();
                }
                catch (Exception ex)
                {
                    this.Body = "Could not read details of message with id " + messageId + ".\n"
                        + "Exception details: " + ex.ToString();
                }

                this.AdditionalDetails = additionalDetails;
            }
        }
开发者ID:jberezanski,项目名称:MsmqFastView,代码行数:37,代码来源:MessageDetailsModel.cs

示例3: RefreshSeats

        private void RefreshSeats()
        {
            while (true)
            {
                

                var seats = GetSqlTickets();
                var seatsCancelledByAdmin = new List<Seat>();

                foreach (var seat in seats)
                {
                    var ticket = _room[seat.Row, seat.Number];
                    if (ticket == null)
                        continue;

                    if (ticket.BookingState == seat.BookingState)
                        continue;

                    ticket.BookingState = seat.BookingState;
                    if (seat.BookingState == BookingState.Cancelled)
                    {
                        seatsCancelledByAdmin.Add(seat);
                    }

                    Dispatcher.Invoke(() =>
                    {
                        ticket.ViewModel.Fill = UpdateState(seat.BookingState);
                    });

                }

                var queue1 = new MessageQueue(_queueName) { Formatter = new XmlMessageFormatter(new[] { typeof(Seat) }) };

                var messages = PeekMessages(queue1);
                //var pendingApprovalMsgs = messages.Where(labelIdMapping => queue1.Peek(TimeSpan.FromMilliseconds(1)) != null)
                //    .Select(x => (x.Body) as Seat).ToList();

                foreach (var message in messages)
                {
                    Seat msg = null;
                    try
                    {
                        msg = queue1.PeekById(message.Id).Body as Seat;
                    }
                    catch (InvalidOperationException ex)
                    {
                        _seats = new List<LabelIdMapping>();
                        continue;
                    }
                    

                    var ticket = _room[msg.Row, msg.Number];
                    if (ticket == null)
                        continue;

                    if (ticket.BookingState == msg.BookingState)
                        continue;

                    ticket.BookingState = msg.BookingState;
                    if (msg.BookingState == BookingState.Cancelled)
                    {
                        seatsCancelledByAdmin.Add(msg);
                    }

                    Dispatcher.Invoke(() =>
                    {
                        ticket.ViewModel.Fill = UpdateState(msg.BookingState);
                    });
                }

                foreach (var cancelledSeat in _seatsCancelledByClient)
                {
                    if (!seats.Contains(cancelledSeat))
                    {
                        var ticket = _room[cancelledSeat.Row, cancelledSeat.Number];
                        ticket.BookingState = BookingState.Free;

                        Dispatcher.Invoke(() =>
                        {
                            ticket.ViewModel.Fill = UpdateState(ticket.BookingState);
                        });
                    }
                }
                _seatsCancelledByClient.Clear();

                Thread.Sleep(1000);

                foreach (var cancelledSeat in seatsCancelledByAdmin)
                {
                    var queue = new MessageQueue(_queueName);
                    if (seats.Contains(cancelledSeat))
                    {
                        var ticket = _room[cancelledSeat.Row, cancelledSeat.Number];
                        ticket.BookingState = BookingState.Free;
                        queue.Send(cancelledSeat);

                        Dispatcher.Invoke(() =>
                        {
                            ticket.ViewModel.Fill = UpdateState(ticket.BookingState);
                        });
//.........这里部分代码省略.........
开发者ID:rock-walker,项目名称:bookingMsmqClient,代码行数:101,代码来源:MainWindow.xaml.cs

示例4: GetFullMessage

 public Message GetFullMessage(MessageQueue messageQueue, string messageId)
 {
     messageQueue.MessageReadPropertyFilter.SetAll();
     messageQueue.MessageReadPropertyFilter.SourceMachine = true;
     return messageQueue.PeekById(messageId);
 }
开发者ID:willmurphyscode,项目名称:MSMQCommander,代码行数:6,代码来源:QueueService.cs


注:本文中的System.Messaging.MessageQueue.PeekById方法示例由纯净天空整理自Github/MSDocs等开源代码及文档管理平台,相关代码片段筛选自各路编程大神贡献的开源项目,源码版权归原作者所有,传播和使用请参考对应项目的License;未经允许,请勿转载。