C#调用_dbCommand.Cancel() hang

成员变量:
DBCommand _dbCommand;
DBDataReader _dbReader;
DBConnection _dbConnection;

先启动一个线程使用Sql ExecuteReader来获取DB数据,再调用Cancel函数,处理如下:
_dbCommand.Cancel();
_dbReader.Close();
_dbCommand.Dispose();
_dbConnection.Dispose();
_dbConnection.Close();

在上述两个操作之间多次执行,就会突然出现_dbCommand.Cancel() hang住的情况,
并且很难恢复,想问有没有什么原因?

sql server profiler看看,执行的什么查询发生挂起,是时间过长还是死锁了