我正在使用ZK框架。我只想在MySQL数据库中插入大量行。插入数据时需要几秒钟。在此期间,我只想显示一个进度表,它告诉用户插入数据库的行数。
我试过这样:
rowCount = qModel.executeInsert();
for(long j = 1; j <= rowCount; j++)
{
sum = sum + 100 / rowCount;
if (j == rowCount)
{
sum = 100;
}
progressMeter.setValue(sum);
countLabel.setValue((rowCount - 1) + " Rows inserted");
BindUtils.postNotifyChange(null, null, countLabel, "_value");
}
此处rowCount
是插入数据库的总行数。我知道在插入过程后,进度表会更新。
但我希望我的进度表更新没有繁忙的标签。
如果有人知道解决方案,请帮帮我。欢迎所有建议。提前谢谢。
答案 0 :(得分:1)
它实际上很简单,
只要您执行相同的操作,您的GUI就不会发生任何更新
您唯一的解决方案是使用多个呼叫,通过计时器或启用服务器推送实现。
这一切看起来都很复杂,但也有好消息 Robert Wenzel撰写了一篇关于简化长期操作的小谈,其中包括简化此操作的基本内容。
请看一下:
https://www.zkoss.org/wiki/Small_Talks/2015/January/Simplify_Long_Operation_Handlings