异步执行两个循环的问题

22222bbb 2017-09-08 11:52:31
写了个例子,窗体1和窗体2,上面各有一个按扭,代码都是从0到10000循环显示 这个i的值
这两个窗口我各点了一下两个窗口上的按扭,先点的总是被挂起了,有没有办法同时两个都可以运行的?

...全文
1289 1 打赏 收藏 转发到动态 举报
写回复
用AI写文章
1 条回复
切换为时间正序
请发表友善的回复…
发表回复
22222bbb 2017-09-09
  • 打赏
  • 举报
回复
这个问题把我整蒙逼了,在同一窗口界面里我知道会出现这样的情况,之前也一直没碰到过这种在两个子窗口中这样循环操作,百度了一下用 Task.Run(这里是按扭的过程) 这样解决了,其实是线程,现在说一下我的真实情况,以上是为了简单写的一个测试例子方便大家能快速帮到我解决,实际情况是:有两个MDI字窗口,窗口1是用来向服务端循环发送数据,由于数据很多,我用的是多线程,始终保持20个线程向服务器发送数据,窗口2则是处理 另一笔数据,也是采用的多个线程同时处理,但当我两个窗口都同时进行工作的时候,先工作 的窗口就停止创建线程了,也就是被挂起了。 两个窗口我采用的线程数量都是这样的:一开始创建20个线程,比如有一万条数据,那就是20个线程运行,每个线程处理一条数据,当结束时线程的计数器-1,同时这个线程被销毁,这个时候又创建新的线程把数量补齐到20,也就是始终保持20个线程,直到数据被处理完所有线程。 所以如果我在实际运用中,大家可能会回答采用多线程,但我的应用本身就已经是多线程,如果再把两个处理的过程放入子线程中,那么就相当于线程里面又有多个线程,感觉这样难度很大,虽然现在用 TTask.Run解决了这个问题,但脑子还是蒙的,想请教大虾们,除了我这个方法外,还有其他方法吗?

5,379

社区成员

发帖
与我相关
我的任务
社区描述
Delphi 开发及应用
社区管理员
  • VCL组件开发及应用社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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