VS.NET 失敗建立表單時發生錯誤,無法產生 ActiveX 控制項 '8856f961-340a-11d0-a96b-00c04fd705a2',因為目前的執行緒不是在單一執行緒 Apartment

最近一個兩三年前的程式要增加一些功能,增加後以為跑完流程就沒問題,事後才發現到要做一些事情跑出了錯誤,錯誤訊息如下:

失敗建立表單時發生錯誤。如需詳細資訊,請參閱 Exception.InnerException。錯誤是: 無法產生 ActiveX 控制項 '8856f961-340a-11d0-a96b-00c04fd705a2',因為目前的執行緒不是在單一執行緒 Apartment。

跑了兩三年的程式,就因為增加新功能而有問題,而且新功能和這個出錯的地方根本一點關係都沒有。

出錯的地方程式大概是這樣寫的:

form1.vb

在 thread 中執行 module.vb 的方法

module.vb

跑到一半執行 form1.vb 中的 function log()

基本上如果要跑多執行續的程式,基本上都在背景執行,如果要控制到畫面上的控制項,就要另外再寫程式處理。不過 form1.vb 裡面的 log() 只是將資料寫入到文字檔,應該跟控制項無關,但是出錯就出錯在這邊。

這隻程式是在我開始學習 .NET 時才這樣寫的,這樣寫的問題,除了程式不好看,參數呼叫來呼叫去的,很難不怕有問題,結果今天就遇到了,最後修正就只是把原本要呼叫 form1.vb 的 log() 部分獨立出來寫到 module.vb 裡面即可。

    Blogger Comment

0 意見: