Я использую адаптер для очереди служебной шины. Поэтому я не должен использовать какой-либо класс очереди для возвращаемого типа. Но я застрял на методе ReceiveAsync()
. Как я могу отобразить Task<BrokeredMessage> to Task<MyAdapterClass>
?Очередь служебной шины как сопоставить задачу <BrokeredMessage> с задачей <MyClass>
Вот адаптер класса для 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; } }
}
И я хочу метод, как этот
public Task<IQueueMessage> ReceiveAsync(TimeSpan serverWaitTime)
{
Task<QueueMessage> task= QueueClient.ReceiveAsync(serverWaitTime);
return task;
}
О проекте драйвера я хочу использовать задачу так:
var task1 = _queueAdapter.ReceiveAsync(new TimeSpan(200)).ContinueWith(ReadMessageAsync);