求高手帮忙:在线程中执行SQl命令,超时被中断的问题

fedoriri 2013-03-07 11:03:47
1.主线程调用子线程,主线程WaitOne(10毫秒)
2.在子线程中执行以下SQl命令,超时(10毫秒)的话子线程被中断,不再操作数据库,返回主线程。
3.主线程根据WaitOne的返回值去做业务处理。
public DataTable Query(string sql, List<DbParameter> parmList = null)
{
DataTable dt = new DataTable();
using (DbCommand command = Connector.Connection.CreateCommand())
{
PrepareCommand(command, Connector.Transaction, sql, CommandType.Text, parmList);
SqlLogOut(command);
using (DbDataAdapter adapter = Connector.Factory.CreateDataAdapter())
{
adapter.SelectCommand = command;
adapter.Fill(dt);
}
command.Parameters.Clear();
}
return dt;
}
问题: 为什么会出现第一次超时没查询到结果,第二次查询时返回第一次的查询结果?
另外中断时间加成则不会出现以上问题。
...全文
190 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
fedoriri 2013-03-15
  • 打赏
  • 举报
回复
哪位大牛有更合理的设计吗?
fedoriri 2013-03-15
  • 打赏
  • 举报
回复
引用 5 楼 zhang_7150 的回复:
撸主的设计本身就不合理,开子线程就是为了提高程序的响应速度、增加性能。而你却让主线程干等着,叫子线程去工作,这是资源浪费,严重的不合理。
客户不想长时间等待数据库操作,没有更好的办法啊
Kilin_Zhang 2013-03-08
  • 打赏
  • 举报
回复
撸主的设计本身就不合理,开子线程就是为了提高程序的响应速度、增加性能。而你却让主线程干等着,叫子线程去工作,这是资源浪费,严重的不合理。
游戏人间 2013-03-08
  • 打赏
  • 举报
回复
把线程的代码贴出来看看。 是不是线程代码写得有问题。
fedoriri 2013-03-08
  • 打赏
  • 举报
回复
没人用过线程控制超时吗?
fedoriri 2013-03-07
  • 打赏
  • 举报
回复
引用 1 楼 rucypli 的回复:
你怎么判断第二次取的是第一次的结果的
debug加断点,看database的结果集
rucypli 2013-03-07
  • 打赏
  • 举报
回复
你怎么判断第二次取的是第一次的结果的

110,535

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧