我不是想给打一个死 马,诚实.我已经阅读了有关线程查杀的所有建议,但请考虑代码.它执行以下操作:
StartThread方法)WAITFOR命令 - 这意味着它将一直坐在那里直到队列中有东西.这一切都在MonitorQueue方法中.杀死线程.我试过.Interrupt- 似乎什么也没做.然后我尝试了.Abort,永远不应该使用,但即使这样做也没有.
Thread thxMonitor = new Thread(MonitorQueue);
void StartThread() {
thxMonitor.Start();
}
void MonitorQueue(object obj) {
var conn = new SqlConnection(connString);
conn.Open();
var cmd = conn.CreateCommand();
cmd.CommandTimeout = 0; // forever and ever
cmd.CommandType = CommandType.Text;
cmd.CommandText = "WAITFOR (RECEIVE CONVERT(int, message_body) AS Message FROM SBQ)";
var dataTable = new DataTable();
var da = new SqlDataAdapter(command); …Run Code Online (Sandbox Code Playgroud)