2008-10-20 69 views
1

我已經使用MS Visual Studio 2005在VB.NET中編寫了一個應用程序。我正在使用.NET版本'2.0.50727'。直到最近,該應用程序運行沒有錯誤。使用一段時間後,它開始產生一個System.Runtime.InteropServices.COMException error (80080005)。當我打電話來產生另一個外部應用程序的實例時,會發生錯誤。一旦發生這個錯誤,它永遠不會消失,每次我的應用程序打開時都會發生。這個錯誤打破了我的程序的功能,因爲它依賴於它所調用的第二個應用程序。VB.NET COMException錯誤

我不確定發生這種錯誤的原因是什麼,但我知道它是用戶特定的而不是應用程序。它似乎是在用戶的Windows配置文件中發生的事情。我可以在同一臺機器上使用不同的用戶,或者爲有問題的用戶創建一個新的配置文件,程序在一段時間內無錯誤地工作。最終(在幾周內),錯誤將會返回並保留,直到我再次解決它。 我想調試COM錯誤,以瞭解爲什麼會發生這種情況,但這是奇怪的行爲,我不知道從哪裏開始。我從來沒有見過將自己連接到配置文件並導致其持久性的錯誤。

我沒有很多.NET的經驗,但我做了很多VB 6應用程序編程。請提供您的建議。非常感謝您的幫助。

這裏就是發生錯誤的代碼塊:

Public Class frmMain 

Public btApp As BarTender.Application 

Private Sub frmMain_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load 

Try 

    btApp = New BarTender.Application 

Catch COMex As Runtime.InteropServices.COMException 

    MessageBox.Show("Error " + COMex.ErrorCode.ToString() + ": " + COMex.Message) 

End Try 

我在frmMain.vb形式的頂部(第一形式加載)聲明變量。 加載第一個窗體時加載COM對象。我將它保持活動狀態,直到應用程序關閉爲止,因爲我撥打了很多電話。

+0

你可以告訴你的代碼和COMException異常嗎?例外中至少應該有一個文本消息。 COMExecptions有很多原因。 – Jan 2008-10-20 16:04:53

回答

1

聽起來像錯誤是安全相關的。它在一段時間後會奇蹟般地發生在一個新用戶身上,我會看看你的用戶策略定義。密碼是否在一段時間後過期?新用戶是否具有根據您的應用程序使用情況填滿的小臨時目錄(因此導致磁盤錯誤被屏蔽爲COM異常)?什麼是第三方應用程序?我們對這裏的細節有所欠缺。但是這些都是需要開始考慮的事情。

+0

我要求的應用程序是Seagull Scientific的Bartender軟件。這是一個標籤打印應用程序。我們用它來運送標籤。我不相信這是一個安全問題。你的臨時目錄想法值得追求。我懷疑這是造成這種情況的一個過程。 – user29635 2008-10-20 20:52:01