2011-05-12 164 views
7

我們正在撰寫一個應用程序,該應用程序將從各種文件中提取第一個文本,然後提取圖像。QTAgent32保存文件打開

在我們的測試腳本中,我們發現一旦我們已經提取文本並嘗試打開文件進行圖像提取,該文件被另一個進程保持打開。

我們已經關閉了對文件的所有引用,將它們處理並設置爲null。

使用Process Explorer,我們發現它是QTAgent32,它保持打開狀態。

我們怎樣才能告訴這個庫釋放句柄,或者這是一個已知的錯誤,它不會影響生產代碼?

+0

你在你的代碼中使用QTAgent,或者它是一些隨機的,無法訪問的進程發生訪問這些文件? – soandos 2011-05-12 00:44:24

+0

什麼是QTAgent32的命令行? – SLaks 2011-05-12 00:45:05

+0

在我們的代碼中不使用QTAgent。 – griegs 2011-05-12 00:46:34

回答

3

QTAgent32是Visual Studio的測試運行器。

這意味着您的測試有一個忘記關閉的FileStream

+0

@SLaks,我剛剛寫了一個Windows應用程序,調用我們的庫,但仍然收到相同的錯誤。你知道爲什麼測試運行者在這種情況下運行嗎? – griegs 2011-05-12 00:47:41

+0

你有任何單元測試嗎? (如果沒有,爲什麼不呢?)檢查QTAgent32的命令行和父進程。 – SLaks 2011-05-12 00:49:03

+0

我們有單元測試,但他們不應該從Windows應用程序實例調用圖書館肯定? – griegs 2011-05-12 00:50:59

0

嘗試在調試中運行測試,暫停執行,並查看您破解的內容。 (關於這個「窮人分析」技術,在stackoverflow的某處有個很好的答案)。

我以這種方式解決了這個問題的實例。在第一次嘗試時,我很驚訝地看到執行中斷致電NetworkStream.Read。它運行在後臺線程上,所以測試仍然通過,但顯然不打算包含在測試中。它無論如何都是死代碼,所以我完全刪除它,重新啓動VS,並且測試再次平穩運行。

+0

謝謝,當我們回到那個項目時,會試試看 – griegs 2011-12-15 23:13:50