C# 访问打印机时未处理AccessViolationException';扫描器

C# 访问打印机时未处理AccessViolationException';扫描器,c#,access-violation,C#,Access Violation,在过去的几个小时里,我读了很多关于这个异常的帖子,但是没有找到解决问题的方法。最困难的部分是im使用我找到的一个库来访问打印机扫描仪,所以很多代码对我来说都是外来代码。真正让我感兴趣的是,代码昨天还在运行,而今天,在完全没有任何改变之后,这一切就开始发生了。错误不是随机的,并且总是在这里的这行代码上 rc = DSMident(appid, IntPtr.Zero, TwDG.Control, TwDAT.Identity, TwMSG.CloseDS, srcds); 用这种方法 publi

在过去的几个小时里,我读了很多关于这个异常的帖子,但是没有找到解决问题的方法。最困难的部分是im使用我找到的一个库来访问打印机扫描仪,所以很多代码对我来说都是外来代码。真正让我感兴趣的是,代码昨天还在运行,而今天,在完全没有任何改变之后,这一切就开始发生了。错误不是随机的,并且总是在这里的这行代码上

rc = DSMident(appid, IntPtr.Zero, TwDG.Control, TwDAT.Identity, TwMSG.CloseDS, srcds);
用这种方法

public void CloseSrc()
    {
        TwRC rc;
        if (srcds.Id != IntPtr.Zero)
        {            
            TwUserInterface guif = new TwUserInterface();
            rc = DSuserif(appid, srcds, TwDG.Control, TwDAT.UserInterface, TwMSG.DisableDS, guif);
            rc = DSMident(appid, IntPtr.Zero, TwDG.Control, TwDAT.Identity, TwMSG.CloseDS, srcds);                           
        }
    }

对不起,这是如此模糊,如果你需要任何其他信息或代码,请让我知道!谢谢大家!

在调用
DSuserif
dsmint
函数调用之间设置延迟。我听上去有点可疑。是延期还是延期?您可以使用
Thread.Sleep(1000)
,延迟1秒。正如您所说,它工作正常,因此可能存在计时问题。如果该方法在库中,我如何让线程等待1秒?表示线程在当前上下文中不存在。好的,我创建了这个System.Threading.thread.Sleep(5000);等待5秒,在调用
DSuserif
dsmint
函数调用之间仍然有相同的errorPut延迟。我听上去有点可疑。是延期还是延期?您可以使用
Thread.Sleep(1000)
,延迟1秒。正如您所说,它工作正常,因此可能存在计时问题。如果该方法在库中,我如何让线程等待1秒?表示线程在当前上下文中不存在。好的,我创建了这个System.Threading.thread.Sleep(5000);等待5秒钟,它仍然有相同的错误