C# 服务总线队列如何映射任务<;BrokeredMessage>;任务<;MyClass>;

C# 服务总线队列如何映射任务<;BrokeredMessage>;任务<;MyClass>;,c#,mapping,task,azure-servicebus-queues,brokeredmessage,C#,Mapping,Task,Azure Servicebus Queues,Brokeredmessage,我正在为服务总线队列使用适配器。因此,我不应该使用任何队列类作为返回类型。但是我对ReceiveAsync()方法很感兴趣。如何将任务映射到任务 下面是BrokeredMessage public class QueueMessage : IQueueMessage { private BrokeredMessage _message; public T Body<T>() { T result = de

我正在为服务总线队列使用适配器。因此,我不应该使用任何队列类作为返回类型。但是我对
ReceiveAsync()
方法很感兴趣。如何将
任务映射到任务

下面是
BrokeredMessage

public class QueueMessage : IQueueMessage
    {
        private BrokeredMessage _message;
        public T Body<T>()
        {
            T result = default(T);
            if (_message != null)
                result = _message.GetBody<T>();
            return result;

        }
        public BrokeredMessage Message { set { _message = value; } }

        public string Label
        {
            get
            {
                var result = "";
                if (_message != null)
                    result = _message.Label;
                return result;
            }
        }

        public void MoveToDeadLetter()
        {
            if (_message != null)
                _message.DeadLetter();
        }

        public void Complete()
        {
            if (_message != null)
                _message.Complete();

        }


        public async void CompleteAsync()
        {
            if (_message != null)
                await _message.CompleteAsync();

        }

        public async void AbandonAsync()
        {
            if (_message != null)
                await _message.AbandonAsync();

        }
        public void Abandon()
        {
            if (_message != null)
                _message.Abandon();
        }

        public string MessageId
        {
            get
            {
                return _message == null ? null : _message.MessageId;
            }
            set { if (_message != null) _message.MessageId = value; }
        }

        public string CorrelationId
        {
            get
            {
                return _message == null ? null : _message.CorrelationId;
            }
            set { if (_message != null) _message.CorrelationId = value; }
        }

        public int DeliveryCount { get { return _message == null ? -1 : _message.DeliveryCount; } }
    }

我将在QueueClient.ReceiveAsync()上尝试继续。看

public Task ReceiveAsync(TimeSpan-serverWaitTime)
{
任务=排队客户端
.ReceiveAsync(服务器等待时间)
.ContinueWith(bm=>newQueueMessage{Message=bm});
返回任务;
}

谢谢你,理查德。我刚刚改进了你的答案,效果很好

public async Task<IQueueMessage> ReceiveAsycn(TimeSpan serverWaitTime)
        {
            var task = QueueClient
                                      .ReceiveAsync(serverWaitTime)
                                      .ContinueWith(bm => bm.Result==null ? null : new QueueMessage { Message=bm.Result});
            return await task;
        }
public async Task ReceiveAsycn(TimeSpan-serverWaitTime)
{
var task=QueueClient
.ReceiveAsync(服务器等待时间)
.ContinueWith(bm=>bm.Result==null?null:newQueueMessage{Message=bm.Result});
返回等待任务;
}
 var task1 = _queueAdapter.ReceiveAsync(new TimeSpan(200)).ContinueWith(ReadMessageAsync);
public Task<IQueueMessage> ReceiveAsync(TimeSpan serverWaitTime)
{
    Task<QueueMessage> task = QueueClient
                              .ReceiveAsync(serverWaitTime)
                              .ContinueWith(bm => new QueueMessage{Message = bm});
    return task;
}
public async Task<IQueueMessage> ReceiveAsycn(TimeSpan serverWaitTime)
        {
            var task = QueueClient
                                      .ReceiveAsync(serverWaitTime)
                                      .ContinueWith(bm => bm.Result==null ? null : new QueueMessage { Message=bm.Result});
            return await task;
        }