线程定时刷新主界面导致tomcat连接池报错,请问怎么解决呢?

wu721 2010-07-15 05:04:14


private void Frm_Load(object sender, EventArgs e)
{
flashThread = new Thread(new ThreadStart(this.flash_doing));
flashThread.Name = "刷新";
flashThread.IsBackground = true;
flashThread.Start(); //启动线程
}

private void flash_doing()
{

while (true)
{
StartFlash();
System.Threading.Thread.Sleep(15*1000); //测试15秒刷新一次
}
}


private void StartFlash()
{
if (this.InvokeRequired)
{
doCallback d = new doCallback(ShowFrm);
this.Invoke(d);
}

}

private void ShowFrm()
{
//刷新页面
}






因为这个界面打开后基本不会关闭,要一直保持隔一段时间进行刷新的状态。而且会有多个客户端同时连接到服务器上。

刷新几次之后tomcat就会报错: Cannot get a connection, pool exhausted

请问怎样在每次刷新之后释放掉连接资源呢?或者有什么好的处理方法?

多谢各位!!!
...全文
171 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
wu721 2010-07-21
  • 打赏
  • 举报
回复
确实还是Server端有连接没有释放造成的。谢谢各位~
wu721 2010-07-15
  • 打赏
  • 举报
回复
ShowFrm() 中有几次调用存储过程返回结果集,调用完成之后都是关闭了connection的。再使用返回的结果集数据更新界面上的控件数据。

这个是关闭连接的代码:

private Connection DbCon = null;
private PreparedStatement prepState;
private CallableStatement callState;
private ResultSet DbResult;

public void close() {
try {
if (DbResult != null) {
DbResult.close();
DbResult = null;
}
} catch (Exception e) {
System.err.println("Error on close ResultSet " + e.getMessage());
}
try {
if (prepState != null) {
prepState.close();
prepState = null;
}
} catch (Exception e) {
System.err.println("Error on close PreparedStatement" + e.getMessage());
}
try {
if (callState != null) {
callState.close();
callState = null;
}
} catch (Exception e) {
System.err.println("Error on close CallableStatement " + e.getMessage());
}
try {
boolean autoCommit = true;
try {
autoCommit = DbCon.getAutoCommit();
} catch (Exception ea) {

}
if (DbCon != null && autoCommit == true) {
DbCon.close();
DbCon = null;
}
} catch (Exception e) {
System.err.println("Error on close Connection " + e.getMessage());
}
}
healer_kx 2010-07-15
  • 打赏
  • 举报
回复
释放的逻辑,还是要在Servlet里面去完成的。
qldsrx 2010-07-15
  • 打赏
  • 举报
回复
没看到你连接tomcat的代码,更不用说释放部分了,单从所见代码来看,一点问题都没有。
healer_kx 2010-07-15
  • 打赏
  • 举报
回复
问题是你的Server端怎么写的,Connection拿到后,你释放了吗?
你写写JSP就知道了。Connection用完了,要Close()啊。
cpp2017 2010-07-15
  • 打赏
  • 举报
回复
关键是刷的代码,这里的代码看不出问题来。
内容概要:本文围绕基于三电平ANPC-VSG(虚拟同步发电机)构网型逆变器的控制策略展开研究,重点提出一种融合双极性倍频脉宽调制(DPWMA)、正负序分离锁相控制与电网电压前馈的复合控制体系。通过ANPC三电平拓扑结构的优势,实现开关损耗均衡、中点电位稳定及低输出谐波,从而提升并网电能质量。采用DPWMA调制策略优化输出波形,有效抑制低次谐波;结合正负序分离技术应对电网不平衡工况,确保锁相精度与并网对称性;引入电网电压前馈控制增强系统动态响应能力与抗扰性能。通过Simulink仿真平台搭建完整模型,验证了该控制策略在稳态运行、电网不平衡及动态扰动等多种复杂工况下的优越性能,展现出高稳态精度、强鲁棒性与快速动态恢复能力,适用于新能源发电、工业大功率变流等高要求并网场景。; 适合人群:具备电力电子、自动控制或电气工程相关背景,从事新能源发电、微电网、逆变器控制等方向的科研人员及工程技术人员,尤其适合研究生及以上层次的研究者。; 使用场景及目标:①用于高电能质量要求的大功率并网逆变器系统设计;②解决电网电压不平衡、畸变、骤升骤降等复杂工况下的并网稳定性问题;③提升逆变器动态响应速度与抗干扰能力,适用于光伏、风电等新能源并网场景。; 阅读建议:建议结合Simulink仿真模型进行实践验证,重点关注DPWMA调制策略的实现逻辑、正负序分离锁相的信号处理流程以及电网电压前馈环节的补偿机制,深入理解各模块间的协同作用,并通过不同工况下的仿真对比分析,全面掌握系统性能优化方法。

111,129

社区成员

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

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

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