错误HRESULT:连接到扫描仪时为0x80070021

时间:2019-08-16 14:41:30

标签: c# wia

我有以下代码,用于通过柯达ScanMate i1120的WIA扫描文档

public static Device InitScanner(string DeviceID)
    {

        var deviceManager = new DeviceManager();

        // Create an empty variable to store the scanner instance
        DeviceInfo firstScannerAvailable = null;

        // Loop through the list of devices
        for (int i = 1; i <= deviceManager.DeviceInfos.Count; i++)
        {

            if (deviceManager.DeviceInfos[i].DeviceID == DeviceID)
            {
                firstScannerAvailable = deviceManager.DeviceInfos[i];
                var device = firstScannerAvailable.Connect();
                return _ConnectedScanner;
            }

        }

        return _ConnectedScanner;
      }

public void ScanDocument()
    {
        string _DeviceID = GetDeviceID(Properties.Settings.Default.DefaultDevice);

        InitScanner(_DeviceID);


        if (_ConnectedScanner == null)
        {
            MessageBox.Show("Scanner is not turned on or connected");
            Lcontinue = false;
            return;
        }
        else
        {
            try
            {

                _item = _ConnectedScanner.Items[1] as Item;
                SelectDeviceDocumentHandling(_ConnectedScanner, DeviceDocumentHandling.Feeder);
                //MessageBox.Show(GetDeviceProperty(_ConnectedScanner, 3078).ToString());
                _MyImage = (ImageFile)_ConnectedScanner.Items[1].Transfer();
                DocCount++;
            }
            catch (Exception ex)
            {
                switch (ex.HResult)
                {

                    case -2145320959:

                        Lcontinue = false;
                        MessageBox.Show(ex.Message + Environment.NewLine + "Unknown Error");
                        return;

                    case -2145320957:

                        if (DocCount == 0)
                        {
                            Lcontinue = false;
                            //_WaitForOperator = false;
                            MessageBox.Show(ex.Message + Environment.NewLine + "There is no paper in the ADF");
                            return;

                        }
                        else
                        {
                            Lcontinue = false;
                            //WaitForOperator = false;
                            //DocCount = 0;
                        }
                        break;

                    case -2145320954:

                        if (DocCount == 0)
                        {
                            Lcontinue = false;
                            //_WaitForOperator = false;
                            MessageBox.Show(ex.Message + Environment.NewLine + "The device is busy, Please retry");
                            return;

                        }
                        else
                        {
                            Lcontinue = false;
                            DocCount = 0;
                        }
                        break;

                    default:

                        Lcontinue = false;
                        MessageBox.Show("Error No : " + ex.HResult + Environment.NewLine + Environment.NewLine + ex.ToString());
                        return;
                }

            }

        }

    }

我的系统上有两个扫描仪,分别是京瓷和柯达,但我只想在此应用程序中使用柯达。

当我尝试用柯达扫描时,出现错误

结果:0x80070021 System.IO.FileLoadException:`该进程无法访问文件,因为另一个进程已锁定文件的一部分。

错误发生在下一行

var device = firstScannerAvailable.Connect();

我没有打开其他扫描应用程序,所以我无法弄清楚是什么锁定了文件。

有人可以看到导致文件锁定的原因吗?

0 个答案:

没有答案