以文本方式查看主题 - Foxtable(狐表) (http://foxtable.net/bbs/index.asp) -- 专家坐堂 (http://foxtable.net/bbs/list.asp?boardid=2) ---- 调用第三方程序可以多线程不. (http://foxtable.net/bbs/dispbbs.asp?boardid=2&id=74090) |
-- 作者:supwork -- 发布时间:2015/9/2 9:55:00 -- 调用第三方程序可以多线程不. If wbtm = True Then
调用 第三方程序,打印是需要等待时间的,如果只调用一次,则一些小延时对前台程序运行,如连续扫描条码无任何影响. 但是如果扫描一个条码时,要打印两张条码时,就要使用Proc.WaitForExit() 了不然只能打印一张条码. 使用了Proc.WaitForExit() 则在这等待过程中 后续程序要待他执行完成才能继续运行,显得有点卡顿了. 要是能启用多线程就行了,只管提交打印任务.不等待就好
|
-- 作者:大红袍 -- 发布时间:2015/9/2 10:06:00 -- 自己弄一个线程执行就好。
全局代码
Public Sub thread_sub1(ByVal obj As Object)
内部函数
Dim proc As new Process
调用代码
Dim nthread As New System.Threading.Thread(AddressOf thread_sub1) |
-- 作者: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) |
-- 作者:supwork -- 发布时间:2015/9/2 14:32:00 -- Dim Pro As New Process
多线程操作 我是这样写的,但执行的时候 报,将string() 转换成string 错误 |
-- 作者:大红袍 -- 发布时间:2015/9/2 14:34:00 -- 呃......
Dim ary() = args(0) Dim Pro As New Process
|
-- 作者: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)
\'提交2 Dim ary1() As string = {"bartend.exe", "D:\\机油泵程序\\简易条码.btw"} Dim nthread1 As New System.Threading.Thread(AddressOf thread_sub1)
同时提交两个打印任务时,只执行了第一个. 两个分开提交的时候正常.
如扫描第1个时,要执行,1,2两个,只执行了1 没执行2. 这个如何解决?
扫描2-4个时,只提交2,2有执行. |
-- 作者:游 -- 发布时间:2015/9/2 15:28:00 -- 思路本身就不合理
建一个队列,扫描负责压入(要打印几次就压入几次),打印负责提取打印 |