以文本方式查看主题 - Foxtable(狐表) (http://foxtable.com/bbs/index.asp) -- 专家坐堂 (http://foxtable.com/bbs/list.asp?boardid=2) ---- 关于多线程的问题 (http://foxtable.com/bbs/dispbbs.asp?boardid=2&id=119616) |
-- 作者:ap9709130 -- 发布时间:2018/5/28 17:44:00 -- 关于多线程的问题 老师, 我想用运用多线程来做各种统计表,现在遇到这个问题。 比如我的函数 : Functions.Execute("统计",a) 运行没有问题,可以生成我想要的统计表 然后我把它变成多线程 Public Sub thread_sub2(ByVal e As Object) functions. Execute("统计",e) End Sub Dim nthread As New System.Threading.Thread(AddressOf thread_sub2) nthread.start(a) 但是会出错,出错提示: |
-- 作者:ap9709130 -- 发布时间:2018/5/28 17:45:00 -- 我在函数中生成表的方法是这样的: Dim q As new QueryBuilder q.TableName = "利润查询" q.C q.SelectString = lm & " " & bm & " " & tj q.Build 用多线程要怎么才能生成相关的表呢?
|
-- 作者:有点甜 -- 发布时间:2018/5/28 18:42:00 -- 多线程访问同一个资源(foxtable的资源,比如 addnew啊、save啊 等)的时候,会报错的,没办法。
必须单线程处理才行,如果希望后台处理,你在循环的过程中加入application.doevents,可以让你继续做其它操作。 |
-- 作者:ap9709130 -- 发布时间:2018/5/29 9:38:00 -- 甜老师 能再说的详细一些吗?怎么才能利用后台,并行运行。 我的情况是这样,因为生成统计的表比较复杂,我是用SQL语句生成的,大约要 20~30 秒,另外,我还要下载比较多的订单明细,也要40秒左右,但是这两个过程是完全独立的。 如果可以同步进行,那么经过优化可能 30秒以内可以全部搞定。如果顺序来,肯定超过1分钟,感觉不是太好。
|
-- 作者:有点甜 -- 发布时间:2018/5/29 9:40:00 -- 请做一个具体实例发上来说明你要做什么。
只要访问到foxtable资源,都不能用多线程处理,除非没有用到。 |
-- 作者:ap9709130 -- 发布时间:2018/5/29 14:17:00 -- 甜老师 因为是公司的系统,没有办法做实例。我就是想用一个外部数据源,然后能用多线程 来实际 sql 语句 生成两个datatable.然后把相关的信息在窗口中展示出来。
|
-- 作者:有点甜 -- 发布时间:2018/5/29 14:27:00 -- 没办法,你用到foxtable资源都不能使用多线程啊。
生成sql语句应该没问题的;不要一起生成table和显示出来;必须一个一个table生成。
|