Foxtable(狐表)用户栏目专家坐堂 → [求助]多线程加队列求助


  共有2300人关注过本帖树形打印复制链接

主题:[求助]多线程加队列求助

帅哥哟,离线,有人找我吗?
有点甜
  1楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:版主 帖子:85326 积分:427815 威望:0 精华:5 注册:2012/10/18 22:13:00
  发帖心情 Post By:2018/1/18 9:36:00 [显示全部帖子]

你都没有调用,压入队列以后,要弹出和执行操作的,如

 

If _MyQueue IsNot Nothing AndAlso  _MyQueue.Count > 0 Then
    Dim dr As System.Data.DataRow = _MyQueue.Dequeue
    e.Form.Controls("Label1").Text = dr("数量")
    dr = Nothing
End If

 

如果要循环执行,就这样调用

 

Vars("逻辑1") += 2
_TPool.QueueUserWorkItem(New System.Threading.WaitCallback (AddressOf ddd))


 回到顶部
帅哥哟,离线,有人找我吗?
有点甜
  2楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:版主 帖子:85326 积分:427815 威望:0 精华:5 注册:2012/10/18 22:13:00
  发帖心情 Post By:2018/1/18 11:27:00 [显示全部帖子]

 压入队列代码有错,不能清空和重新new,试试改成下面

 

Dim xsdh As String = Args(0)
Dim dr As DataRow = DataTables("订单计划一览表后台").SQLFind("销售单号 = '" & xsdh & "'")
Dim htdr As System.Data.DataRow
If dr IsNot Nothing Then
    'MessageBox.Show("有取后台")
    htdr = dr.baseRow
    _MyQueue.Enqueue(htdr)
    Vars("逻辑1") += 2
End If
htdr = Nothing
Return Nothing


 回到顶部
帅哥哟,离线,有人找我吗?
有点甜
  3楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:版主 帖子:85326 积分:427815 威望:0 精华:5 注册:2012/10/18 22:13:00
  发帖心情 Post By:2018/1/18 12:03:00 [显示全部帖子]

删除这两句看看

 

Dim wz As Integer = Tables("订单计划一览表").FindRow(ndr)
Tables("订单计划一览表").AutoSizeRow(wz)


 回到顶部
帅哥哟,离线,有人找我吗?
有点甜
  4楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:版主 帖子:85326 积分:427815 威望:0 精华:5 注册:2012/10/18 22:13:00
  发帖心情 Post By:2018/1/18 17:10:00 [显示全部帖子]

删除代码

 

_TPool.QueueUserWorkItem(New System.Threading.WaitCallback (AddressOf ddd))


 

开启的代码,在afterOpenProject处理即可

 

_TPool.QueueUserWorkItem(New System.Threading.WaitCallback (AddressOf ddd))

[此贴子已经被作者于2018/1/18 17:09:55编辑过]

 回到顶部
帅哥哟,离线,有人找我吗?
有点甜
  5楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:版主 帖子:85326 积分:427815 威望:0 精华:5 注册:2012/10/18 22:13:00
  发帖心情 Post By:2018/1/19 9:35:00 [显示全部帖子]

报什么错?上传具体实例测试。

 回到顶部
帅哥哟,离线,有人找我吗?
有点甜
  6楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:版主 帖子:85326 积分:427815 威望:0 精华:5 注册:2012/10/18 22:13:00
  发帖心情 Post By:2018/1/19 10:36:00 [显示全部帖子]

1、如果提示索引问题是这句代码

 

Dim dr As DataRow = DataTables("订单计划一览表").Select("销售单号 = '"& htdr("销售单号") &"'")(0)

 

改成

 

Dim dr As DataRow = DataTables("订单计划一览表").find("销售单号 = '"& htdr("销售单号") &"'")

 

2、队列那里,最后用到了委托,执行委托的函数的时候,如果有耗时代码,该耗时还是会耗时,该假死还是会假死的。

 

3、你的代码我分析测试没问题,请就你的例子,做个简易版本的发上来测试。


 回到顶部
帅哥哟,离线,有人找我吗?
有点甜
  7楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:版主 帖子:85326 积分:427815 威望:0 精华:5 注册:2012/10/18 22:13:00
  发帖心情 Post By:2018/1/24 14:26:00 [显示全部帖子]

 不应该报错,就【队列】的修改,修改成出错发上来测试。
[此贴子已经被作者于2018/1/24 14:26:14编辑过]

 回到顶部