Ah, now I remember why I didn't 'fix' this initially.
I think your example may exhibit this strange result too as well as I played with it also.
I check to see whether the channel is enabled, if not, I pass it PS5000_5V which is what I initialize the channel too in the beginning.
I've noticed that if both channels are off and a valid value is passed to ps5000SetChannel, the loop in blockdatahandler that gets the timebase via calls to ps5000GetTimebase gets stuck in an infinite loop.
I tried it with the C code and it does the same thing. But, when I send ps5000SetChannel the value of '99' I get the bad Status report but it works fine. I get no data, but then again, the channels are off, so this is what I think would be expected. However, no infinite loop to ps5000GetTimebase though...