【发布时间】:2021-03-16 11:02:56
【问题描述】:
我想做以下事情:
创建一个由函数启动一次的 DLL,然后永久侦听新的传入服务总线消息。
在我看来,我的基本问题是找到一种方法来等待事件处理程序可以执行。我想永久地这样做。所以应该总是可以执行事件处理程序。 目前GetPayloadAsync入口函数终止太快。
在 .NET 中,代码如下所示:
函数GetPayloadAsync
public static async Task GetPayloadAsyc()
{
_tokenSource = new CancellationTokenSource();
var token = _tokenSource.Token;
await ReceiveMessagesAsync(token));
}
ReceiveMessagesAsync 函数如下所示并注册事件处理程序:
static async Task ReceiveMessagesAsync(CancellationToken token)
{
ServiceBusClient client = new ServiceBusClient(AZURE_SERVICE_BUS_CONNECTIONSTRING, new ServiceBusClientOptions
{
TransportType = ServiceBusTransportType.AmqpWebSockets
});
ServiceBusSessionProcessor processor = client.CreateSessionProcessor(QUEUE_NAME, new ServiceBusSessionProcessorOptions
{
MaxConcurrentSessions = 1,
AutoCompleteMessages = false
});
// add handler to process messages
//processor.
processor.ProcessMessageAsync += MessageHandler;
// add handler to process any errors
processor.ProcessErrorAsync += ErrorHandler;
// start processing
await processor.StartProcessingAsync(token);
}
有没有人建议我如何解决这个问题?
【问题讨论】:
标签: c# multithreading events event-handling azureservicebus