C#调用ExecuteReader多次读取大数据后hang

1.开一个线程调用ExecuteReader
string conStr = "server=.;uid=sa;pwd=123456;database=itcastdb";
SqlConnection con = new SqlConnection(conStr);
SqlCommand cmd =con.CreateCommand();
con.Open();
cmd.CommandText = “SELECT TOP 50000 FROM table1 LEFT JOIN table2";
SqlDataReader reader = cmd.ExecuteReader();
(此处reader和con被存为类的成员变量,SELECT语句是左联,具体略)
2.开一个线程通过reader来读DB数据
reader.Read();
获取一定量后线程结束,然后开新线程继续reader。
3.都读取完毕
reader.Close();
con.Close();
4.有一个Cancel函数可以在reader过程中打断reader并reader.Cancel(); reader.Close();con.Close();

问题是,多次执行ExecuteReader跟Cancel后,会突然出现ExecuteReader hang的情况,需要等待10分钟以上才有相应。
同一时间,有向table1 Insert 数据,

求解,谢谢。

sql server profiler看看,查询是不是遇到了死锁