当前位置: 首页 > 知识库问答 >
问题:

该进程无法访问文件“filename”,因为在删除文件时另一个进程正在使用该文件

岑彬炳
2023-03-14

当我试图删除一个文件时,它说我的服务器正在使用它,所以我尝试使用(Image img=Image.FromFile(imgFilePath))实现一个,但随后我得到了参数无效的错误消息。我还尝试将图像存储在变量中,然后调用。Dispose()但这也不起作用。

任何帮助都将不胜感激!

删除代码(客户端):

private void pbDelete_Click(object sender, EventArgs e)
        {
            if (imgSliderCapture.Images.Count > 0)
            {
                int currentImageIndex = imgSliderCapture.CurrentImageIndex;
                m_DispenseOrderPresenter.DeleteCapturedRxImage(currentImageIndex);
                imgSliderCapture.Images.RemoveAt(currentImageIndex);

                if (imgSliderCapture.Images.Count <= 0)
                {
                    pbCamera.Image = global::KeyCentrix.RxKey.UI.Properties.Resources.white_camera;
                    pbCamera.BackColor = Color.DarkGray;
                    imgSliderCapture.ImageList = null;
                    pbCamera.Padding = new Padding(38, 15, 40, 35);
                    pbCamera.Size = new Size(169, 123);
                    pbDelete.Visible = false;
                }
            }
        }

public void DeleteCapturedRxImage(int currentImageIndex)
        {
            if (File.Exists(m_PathImagePairs[currentImageIndex].Key))
            {
                File.Delete(m_PathImagePairs[currentImageIndex].Key);
            }
        }

服务器端代码我认为可能会导致问题:

public List<KeyValuePair<string, Image>> GetCapturedRxImages(string rxId)
        {
            try
            {                 
                string[] imgFilePaths = GetCapturedRxImagesFilePaths(rxId);
                List<KeyValuePair<string, Image>> images = new List<KeyValuePair<string, Image>>();
                List<byte[]> byteArrays = new List<byte[]>();

                if (imgFilePaths == null || imgFilePaths.Length < 1)
                {
                    return null;
                }

                foreach(string imgFilePath in imgFilePaths)
                {
                    images.Add(new KeyValuePair<string, Image>(imgFilePath, Image.FromFile(imgFilePath)));
                }
                return images;
            }
            catch (Exception ex)
            {
                LogFactory.LogEvent(typeof(RxDirSvc), LogLevel.Error, String.Format("Exception in {0}", MethodInfo.GetCurrentMethod()), ex);
                return null;
            }
        }

        /// <summary>
        /// Gets the user captured drug's image file name and path
        /// </summary>
        /// <param name="identifier"></param>
        /// <returns></returns>
        public string[] GetCapturedRxImagesFilePaths(string rxId)
        {
            try
            {
                List<string> filesFound = new List<string>();
                string pathFolder = Directory.GetParent(System.Windows.Forms.Application.StartupPath) + @"\images\RxCapturedImages\" + rxId;
                
                filesFound.AddRange(Directory.GetFiles(pathFolder, "*.jpeg"));
                return filesFound.ToArray();
            }
            catch (Exception ex)
            {
                LogFactory.LogEvent(typeof(RxDirSvc), LogLevel.Error, String.Format("Exception in {0}", MethodInfo.GetCurrentMethod()), ex);
                return null;
            }
        }

共有1个答案

宰父德馨
2023-03-14

你试过这样吗?您必须先从列表中删除图像,然后再将其删除。由于图像仍绑定到滑块,因此可能发生了错误。

imgSliderCapture.Images.RemoveAt(currentImageIndex);
m_DispenseOrderPresenter.DeleteCapturedRxImage(currentImageIndex);
 类似资料:
  • 我不断收到一个IOException,它无法访问该文件,因为它正被另一个进程使用。我想做的是每次我查看的文件都会被更改。。它通过TCP/IP以数组的形式发送。我找不到任何关闭XDocument的方法,只是不知道如何修复这个错误。。。我用谷歌搜索了一下,但还是什么都找不到。任何帮助都将不胜感激 编辑:我发现了其他的解决方案与fileereader和其他东西...但它似乎不同,当使用xfile

  • 我正在尝试测试我自己的antiweb版本,可以在这里找到。但是,我正在使用Pythons单元测试模块对其进行测试。代码如下: 除了功能外,所有功能都正常工作。在执行unittest时,如果不拆下,temp文件夹及其内容将被完美创建。但是使用功能,我得到一个错误: 当我再看临时文件夹时,文件夹本身仍然在那里,但现在是空的。这将是太多,包括我的反网络文件在这里,所以我有它在这里再次链接,如果你需要它。

  • 我的代码用于查看文件夹并删除分辨率为1920x1080的图像的脚本。我遇到的问题是,当我的代码运行时; 我收到以下错误消息: 我想确认一下,Python是我电脑上唯一运行的程序。导致此问题的原因是什么?如何解决?

  • 我正在测试一个python代码,它将文件从源路径移动到目标路径。测试是使用Python3中的pytest完成的。但我在这里面临着一个障碍。就是这样,我试图在代码结束时删除源路径和目标路径。为此,我使用了类似shutil的命令。rmtree(路径)或操作系统。rmdir(路径)。这导致了错误-“[WinError 32]该进程无法访问该文件,因为它正被另一进程使用”。请帮我做这个。下面是python

  • 我正在使用python 2,并且已经阅读了关于这个错误的几篇文章,即(这篇文章)。然而,我仍然得到错误。我所做的是:我读取目录中的文件,如果其中任何文件包含特定的字符串,我就删除目录。 然后我得到错误: 我也尝试过使用绝对路径: 然后我会得到: 如果我一次删除一个文件,使用相同的绝对路径和操作系统。删除(“”),我不会有问题。如果我试图使用select_poo()和shutil同时删除所有文件。r