使用序列化打印时 BarTender 出现卡顿或无响应
症状
当尝试打印带有序列号的标签时,BarTender 可能会卡死。Print Portal 会立即显示出这个问题,但在 Designer 和 Print Station 中也可能出现卡死的情况。
解决方法/答案
找到带有命名数据源的序列化对象。在“数据源”选项卡上记下数据源名称:
在“转换”选项卡中,打开序列化对话框。底部的“序列号”选项很可能设置为某种类型的数据源。
打开属性对话框,检查数据源的名称
所关联的命名数据源就是之前提到的对象本身,或者是另一个正在进行序列化的对象。如果还有其他值也在递增,也可能出现这种情况。
要停止这种情况,请移除与数据源的关联。可以更改为其他值,或者设置为从打印对话框中读取值。
这是怎么回事?
当 BarTender 在打印时读取这些值时,会进入递归循环。在这个例子中,当它尝试读取序列化变量时,发现它被设置为 1234。这意味着它要生成 1234 个序列号。
但当它尝试递增到 1235 时,会发生什么?它现在需要在原本要生成的 1234 个序列号的基础上,再生成 1235 个序列号。这个过程会迅速失控,直到程序卡死或崩溃。它会递归地尝试读取自己的值,并根据当前的值做出反应。随着数值不断递增(或递减),程序会变得混乱,无法继续运行。
在打印时断开值自我读取的关联,可以彻底阻止这种情况的发生。