Interrupts can be very useful for many different purposes ... this isn't one of them.
In fact, interrupts will only slow things down and reduce the resolution of your readings.

A variation of what Henrik was describing might look like this ...
The resolution with WORD variables for the counts is 9uS (16F1783 running at 32Mhz internal OSC).
If the counters are BYTEs, the resolution is 3.5 uS, as measured in the simulator.

With interrupts, using a BASIC language ISR, that resolution will suffer greatly.
Code:
DEFINE OSC 32

ANSELA = 0
ANSELB = 0

Results   VAR BYTE[9]
Res0      VAR Results[0]
Res1      VAR Results[1]
Res2      VAR Results[2]
Res3      VAR Results[3]
Res4      VAR Results[4]
Res5      VAR Results[5]
Res6      VAR Results[6]
Res7      VAR Results[7]
Res8      VAR Results[8]
IOCA      VAR BYTE
IOCB      VAR BYTE
Testing   VAR PORTC.0

IOCBP = $FF
IOCBF = 0

CLEAR
WHILE !Testing : WEND
PAUSE 20

WHILE Testing
    IOCA = IOCAF
    IOCAF = 0
    IOCB = IOCBF
    IOCBF = 0
    Res0 = Res0 + IOCA.0
    Res1 = Res1 + IOCA.1
    Res2 = Res2 + IOCA.2
    Res3 = Res3 + IOCA.3
    Res4 = Res4 + IOCA.4
    Res5 = Res5 + IOCA.5
    Res6 = Res6 + IOCB.0
    Res7 = Res7 + IOCB.1
    Res8 = Res8 + IOCB.2
WEND