Foxtable(狐表)用户栏目专家坐堂 → 调用第三方程序可以多线程不.


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

主题:调用第三方程序可以多线程不.

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


加好友 发短信
等级:三尾狐 帖子:688 积分:4903 威望:0 精华:0 注册:2013/10/27 17:14:00
调用第三方程序可以多线程不.  发帖心情 Post By:2015/9/2 9:55:00 [只看该作者]

If wbtm = True Then
    wbwr.PerformClick
    Dim Proc As New Process
    Proc.File = "bartend.exe" '指定要执行的文件
    Proc.Arguments = "D:\机油泵程序\东风外包条码.btw" 
    Proc.Start()
    Proc.WaitForExit()
End If
If gstm = True Then
    gswr.PerformClick
    Dim Procb As New Process
    Procb.File = "bartend.exe" '指定要执行的文件
    Procb.Arguments = "D:\机油泵程序\公司条码.btw"
    Procb.Start()
End If
nbwr.PerformClick

 

调用 第三方程序,打印是需要等待时间的,如果只调用一次,则一些小延时对前台程序运行,如连续扫描条码无任何影响.

但是如果扫描一个条码时,要打印两张条码时,就要使用Proc.WaitForExit() 了不然只能打印一张条码.

使用了Proc.WaitForExit() 则在这等待过程中 后续程序要待他执行完成才能继续运行,显得有点卡顿了. 要是能启用多线程就行了,只管提交打印任务.不等待就好

 


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


加好友 发短信
等级:贵宾 帖子:39310 积分:196782 威望:0 精华:1 注册:2015/4/25 9:23:00
  发帖心情 Post By:2015/9/2 10:06:00 [只看该作者]

自己弄一个线程执行就好。

 

全局代码

 

Public Sub thread_sub1(ByVal obj As Object)
    functions. Execute("多线程操作", obj)
End Sub

 

内部函数

 

Dim proc As new Process
proc.File = args(0)
proc.Start
proc.WaitForExit

 

调用代码

 

Dim nthread As New System.Threading.Thread(AddressOf thread_sub1)
nthread.start("notepad")


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


加好友 发短信
等级:三尾狐 帖子:688 积分:4903 威望:0 精华:0 注册:2013/10/27 17:14:00
  发帖心情 Post By:2015/9/2 12:02:00 [只看该作者]

加上了这句proc.WaitForExit 不还是一新的效果?

 每次调用还要等待

 

现在我一种条码每扫描4个打印一次,有一种条码扫描一次打印一次

 

我在一种条码每扫描4个打印一次后面加上等待完成,则每扫描四个条码时,卡一次零点几秒. 其它的时候没有任何卡顿的

 

[此贴子已经被作者于2015/9/2 12:04:02编辑过]

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


加好友 发短信
等级:贵宾 帖子:39310 积分:196782 威望:0 精华:1 注册:2015/4/25 9:23:00
  发帖心情 Post By:2015/9/2 12:39:00 [只看该作者]

 认认真真看完2楼代码

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


加好友 发短信
等级:三尾狐 帖子:688 积分:4903 威望:0 精华:0 注册:2013/10/27 17:14:00
  发帖心情 Post By:2015/9/2 14:16:00 [只看该作者]

Procb.Arguments = "D:\机油泵程序\公司条码.btw"
这一句要如何处理呢

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


加好友 发短信
等级:贵宾 帖子:39310 积分:196782 威望:0 精华:1 注册:2015/4/25 9:23:00
  发帖心情 Post By:2015/9/2 14:19:00 [只看该作者]

作为参数传入。任意参数都可以

 

Dim ary() As string = {"bartend.exe", "D:\机油泵程序\公司条码.btw"}

Dim nthread As New System.Threading.Thread(AddressOf thread_sub1)
nthread.start(ary)


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


加好友 发短信
等级:三尾狐 帖子:688 积分:4903 威望:0 精华:0 注册:2013/10/27 17:14:00
  发帖心情 Post By:2015/9/2 14:32:00 [只看该作者]

Dim Pro As New Process
Pro.File = args(0)
Pro.Arguments = args(1)
Pro.Start()
pro.WaitForExit

 

多线程操作 我是这样写的,但执行的时候 报,将string() 转换成string 错误


 回到顶部
帅哥哟,离线,有人找我吗?
大红袍
  8楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:贵宾 帖子:39310 积分:196782 威望:0 精华:1 注册:2015/4/25 9:23:00
  发帖心情 Post By:2015/9/2 14:34:00 [只看该作者]

呃......

 

Dim ary() = args(0)

Dim Pro As New Process
Pro.File = ary(0)
Pro.Arguments = ary(1)
Pro.Start()
pro.WaitForExit

 


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


加好友 发短信
等级:三尾狐 帖子:688 积分:4903 威望:0 精华:0 注册:2013/10/27 17:14:00
  发帖心情 Post By:2015/9/2 14:45:00 [只看该作者]

学到不少东西了谢谢

 

不过还有一个问题没解决

'提交1

Dim ary() As string = {"bartend.exe", "D:\机油泵程序\公司条码.btw"}

Dim nthread As New System.Threading.Thread(AddressOf thread_sub1)
nthread.start(ary)

 

'提交2

Dim ary1() As string = {"bartend.exe", "D:\机油泵程序\简易条码.btw"}

Dim nthread1 As New System.Threading.Thread(AddressOf thread_sub1)
nthread1.start(ary1)

 

同时提交两个打印任务时,只执行了第一个. 两个分开提交的时候正常.

 

如扫描第1个时,要执行,1,2两个,只执行了1 没执行2.   这个如何解决?

 

扫描2-4个时,只提交2,2有执行.


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


加好友 发短信
等级:小狐 帖子:321 积分:1916 威望:0 精华:0 注册:2014/8/24 13:36:00
  发帖心情 Post By:2015/9/2 15:28:00 [只看该作者]

思路本身就不合理

 

建一个队列,扫描负责压入(要打印几次就压入几次),打印负责提取打印


 回到顶部
总数 13 1 2 下一页