Мне нужно посмотреть, что происходит внутри вашей другой DLL. По умолчанию все должно работать так, как вы хотите. Если вы не сделаете что-то, чтобы сделать это асинхронным, события в .NET будут синхронными. Когда вы запускаете событие, код, который запускает это событие, не будет продолжать выполняться до тех пор, пока все делегаты, которые прослушивают событие, не будут выполнены до завершения (или один из делегатов не сгенерирует исключение).
Заявление о том, что код «ждет», пока не завершатся выполнение делегатов, даже не является точным утверждением, событие можно рассматривать как набор делегатов, а когда событие вызывается, оно проходит по всем делегатам и выполняет их по одному.