I did some additional investigation and discovered the following: The first time I run my customized example program then streaming usually works. I've changed the code so that the memory for the sample buffers are only allocated when the program starts and then reused for each streaming run. They are not deallocated until the program terminates. I added some debug prints to see if the pointers are getting stepped on but they seem to be fine throughout the program. I have been checking the return values from ps4000RunStreaming() and ps4000GetLatestValues() (and a lot of the other API calls) and I noticed that the 2nd time I try to run streaming I get a PICO_NOT_RESPONDING error from the ps4000GetLatestValues() call. I tried only setting the data buffers once in the program but I started getting a PICO_INVALID_BUFFER error message so I changed the code to set the buffers before calling ps4000RunStreaming each time. (but I'm still only allocating the buffers in the beginning of the program and deallocating right before exit) I modified the code so that when I get the PICO_NOT_RESPONDING I do a ps4000Stop, a ps4000CloseUnit, a ps4000OpenUnit and then reinitialize the scope. When I do this I don't have to exit the program and re-enter it to stream multiple times. I do think that this workaround is not the best and would like to track down the real issue. I still think there may be some race condition with the ps4000Stop or something. Looking forward to finding a solution.