【问题标题】:POS .net not releasing MSRPOS .net 未发布 MSR
【发布时间】:2019-03-26 21:37:39
【问题描述】:

我在我的应用程序中使用了一个 MSR 设备,该设备在应用程序运行时按预期工作。但是,如果我的应用程序崩溃或被强制关闭,则 MSR 不会被释放并且无法回收(尽管它仍然可以打开和关闭)。通过实验,我发现如果我注销用户或重新启动 OPOS 控制服务,那么一切正常。

我不认为硬编码重新启动服务是可行的方法,我宁愿强制设备因错误而被释放。

有人知道这是否可行吗?

提前致谢。

【问题讨论】:

    标签: c# opos pos-for-.net


    【解决方案1】:

    你的措施将是现实的。

    当应用程序崩溃或挂起时,所用资源或打开状态的所有权通常保持不变。

    通常会关闭和重新启动系统。
    用户注销和重新登录是相应的对策。

    如果您可以安全地终止应用程序,您也可以只重启应用程序,保持系统在登录状态下运行。

    【讨论】:

    • 非常感谢您的回复。当用户有意结束时,我的应用程序干净地退出。我试图确保如果系统在使用过程中崩溃,它将释放所有声明的设备,以便它可以在没有用户注销/登录或系统重新启动的情况下重新启动。我有其他成功发布的 OPOS 设备(线显示等),但 MSR 没有。我的问题是有没有办法强制释放这个设备?
    • 这取决于您使用的服务对象内部的机制。它关心是否在编程时假设对象被销毁,即使 Close 方法没有被显式调用。或者服务对象使用进程之外的资源进行声明/释放控制。由于某些差异,您使用的 MSR 服务对象可能是崩溃和挂起的弱机制。请考虑向 MSR 供应商请求改进或尝试其他供应商的 MSR。
    • 嗨库尼夫。非常感谢您的回复。这是一个非常奇怪的问题,当我强制应用程序崩溃时,我可以打开()和关闭()设备,但是如果我尝试声明(),则会引发异常。我尝试了 2 个不同的 MSR,每个都在不同的 POS 硬件上运行,但结果是一样的。为了恢复,我必须关闭。重新启动、注销/登录或重新启动服务。
    • 这可能是由索赔时的排他控制处理引起的。此时服务对象使用named mutex/global atom/lock file/something执行处理,当crash后重启应用时,认为Claim时检测到异常状态,恢复不完善。
    【解决方案2】:

    捕获异常并调用一个金融打印机.ResetPrinter() 方法退出

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-11-05
      • 1970-01-01
      • 1970-01-01
      • 2014-03-06
      • 2020-04-30
      • 1970-01-01
      相关资源
      最近更新 更多