C# QTAgent32保持文件打开

C# QTAgent32保持文件打开,c#,C#,我们正在编写一个应用程序,它将首先从各种文件中提取文本,然后提取图像 在我们的测试脚本中,我们发现一旦我们提取了文本并尝试打开文件进行图像提取,该文件就会被另一个进程打开 我们已经关闭了对该文件的所有引用,并将其释放并设置为null 使用Process Explorer,我们发现是QTAgent32将其打开 我们如何告诉此库释放句柄,或者这是一个已知的错误,并且不会影响生产代码?QTAgent32是Visual Studio的测试运行程序 这意味着您的测试有一个您忘记关闭的文件流。尝试在调试中运

我们正在编写一个应用程序,它将首先从各种文件中提取文本,然后提取图像

在我们的测试脚本中,我们发现一旦我们提取了文本并尝试打开文件进行图像提取,该文件就会被另一个进程打开

我们已经关闭了对该文件的所有引用,并将其释放并设置为null

使用Process Explorer,我们发现是QTAgent32将其打开


我们如何告诉此库释放句柄,或者这是一个已知的错误,并且不会影响生产代码?

QTAgent32是Visual Studio的测试运行程序


这意味着您的测试有一个您忘记关闭的
文件流。

尝试在调试中运行测试,暂停执行,并查看中断的内容。(stackoverflow上的某个地方有一个很好的答案,关于这个“穷人的剖析”技术)


我用这种方法解决了这个问题。在第一次尝试时,我惊讶地看到,在调用时执行中断。它是在后台线程上运行的,因此测试仍然通过,但显然不打算将其包含在测试中。不管怎么说,它是死代码,所以我完全删除了它,重新启动了VS,测试再次顺利运行。

您是在代码中使用QTAgent,还是在访问这些文件时使用了一些随机的、未关联的进程?QTAgent32的命令行是什么?在代码中不使用QTAgent。@SLaks,我刚刚编写了一个调用我们库的Windows应用程序,但仍然收到相同的错误。你知道为什么测试运行程序会在这个实例中运行吗?你有单元测试吗?(如果没有,为什么没有?)检查QTAgent32的命令行和父进程。我们有单元测试,但它们不应该从调用库的windows应用程序中实例化?当然没有,但测试从上次运行时起就保持文件打开。我关闭了库项目,检查文件是否处于打开状态,并以相同的结果运行windows应用程序。我知道代理是测试代理,现在我想知道为什么在导入库的发布版本时它会打开一个文件谢谢,我们回到那个项目时会尝试一下