This depends on HSM.
I don't know what can cause this strange behaviour in your HSM. Maybe a connection or concurrency issue (i.e. more clients want to communicate with the HSM at the same time).
Anyway PKCS#11 specifications state that the available slots must be read during the function C_Initialize that in NCryptoki correspond to the method Cryptoki.Initialize. If after C_Initialize more slots become available they will be not visible untill a new C_Initialize is called.
Therefore you could try by checking the slot count. If it is 0 you may reinitialize the PKCS#11 module by calling Finalize to end the current session and then call Initialize again to reinizialize a new session with the PKCS#11 module.