With NETMF, the core handles the hardware interrupts and puts them on a queue. There is a single thread that dispatches the queued interrupts to the user’s interrupt handlers. There can be several milliseconds delay, from the time the hardware interrupt is handled until the user’s handler sees it, but the interrupt handler’s arguments contain a timestamp when the hardware interrupt occurred.
Since there is a delay, between the hardware interrupt and the calling of the users interrupt handler, you should not read an InterruptPort to get the value associated with an interrupt. Again the handler’s arguments contain the port value at the time of the hardware interrupt.
While it is unlikely that 6 interrupts will occur “simultaneously”, the hardware and core can handle it, and you will see the interrupts in your handler sequentially.
If interrupts occur at a high rate, and you do not process them fast enough, it is possible to run out of memory due to queued interrupts.