If you are executing a complex query, then typically the executeReader statement or any of the other command statements can take quite some time before any record is actually returned. It depends on the indexes in the database, the timeout you specified and so on.
If you place a messagebox or a breakpoint on the first processing of a record, then you know for sure that the query is really being executed by your code.