C# NServiceBus处理程序中的多线程

C# NServiceBus处理程序中的多线程,c#,.net,queue,nservicebus,C#,.net,Queue,Nservicebus,是否存在在处理程序中运行异步操作是合理的场景? 例如: public class H1 : IMessageHandler<MyMessage> { public async void Handle(MyMessage message) { await SendTxt(message); await SendEmail(message); } } public类H1:IMessageHandler { 公共异步无效句柄(MyM

是否存在在处理程序中运行异步操作是合理的场景? 例如:

public class H1 : IMessageHandler<MyMessage>
{
    public async void Handle(MyMessage message)
    {
        await SendTxt(message);
        await SendEmail(message);
    }
}
public类H1:IMessageHandler
{
公共异步无效句柄(MyMessage)
{
等待SendTxt(消息);
等待发送电子邮件(消息);
}
}

NServiceBus不支持异步处理程序


您想做什么?

您的问题是否与“NServiceBus是否支持异步处理程序”相同?或多或少。据我所知,NServiceBus管理自己的线程。我想知道的是,我是否应该避免在处理程序中旋转更多线程(如果是,那么为什么),或者这是否完全合法。我不知道答案,但我想确保您了解一件事:异步、等待或异步IO都不会启动或阻止线程。也许这是您的误解。@usr没有显式创建额外的线程,但这种更改可能会导致以前不存在的并行。例如,如果事件处理程序在所有以前的处理程序完成之前都不会启动,那么使用同步处理程序将隐式同步代码,使其异步将隐式并行化。某些continuations还可以在线程池线程中运行(同样,如果没有同步上下文),而上下文中可能不支持该线程池线程。