以文本方式查看主题

-  Foxtable(狐表)  (http://www.foxtable.com/bbs/index.asp)
--  专家坐堂  (http://www.foxtable.com/bbs/list.asp?boardid=2)
----  调用第三方程序可以多线程不.  (http://www.foxtable.com/bbs/dispbbs.asp?boardid=2&id=74090)

--  作者:supwork
--  发布时间: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() 则在这等待过程中 后续程序要待他执行完成才能继续运行,显得有点卡顿了. 要是能启用多线程就行了,只管提交打印任务.不等待就好

 


--  作者:大红袍
--  发布时间: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
--  发布时间:2015/9/2 12:02:00
--  

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

 每次调用还要等待

 

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

 

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

 

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

--  作者:大红袍
--  发布时间:2015/9/2 12:39:00
--  
 认认真真看完2楼代码
--  作者:supwork
--  发布时间:2015/9/2 14:16:00
--  
Procb.Arguments = "D:\\机油泵程序\\公司条码.btw"
这一句要如何处理呢
--  作者:大红袍
--  发布时间: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
--  发布时间: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 错误


--  作者:大红袍
--  发布时间: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
--  发布时间: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有执行.


--  作者:游
--  发布时间:2015/9/2 15:28:00
--  

思路本身就不合理

 

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