gpt4 book ai didi

c# - 服务总线队列如何将 Task 映射到 Task

转载 作者:太空宇宙 更新时间:2023-11-03 10:32:59 26 4
gpt4 key购买 nike

我正在为服务总线队列使用适配器。因此,我不应该使用任何类的 Queue 作为返回类型。但我坚持 ReceiveAsync()方法。如何映射 Task<BrokeredMessage> to Task<MyAdapterClass>

这是 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;
}

在 Driver 项目中,我想使用这样的任务:

 var task1 = _queueAdapter.ReceiveAsync(new TimeSpan(200)).ContinueWith(ReadMessageAsync);

最佳答案

我会尝试继续 QueueClient.ReceiveAsync()。参见 https://msdn.microsoft.com/en-us/library/vstudio/ee372288(v=vs.100).aspx

public Task<IQueueMessage> ReceiveAsync(TimeSpan serverWaitTime)
{
Task<QueueMessage> task = QueueClient
.ReceiveAsync(serverWaitTime)
.ContinueWith(bm => new QueueMessage{Message = bm});
return task;
}

关于c# - 服务总线队列如何将 Task<BrokeredMessage> 映射到 Task<MyClass>,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29170856/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com