【疑難】在單線程中模擬多線程的工作模式(下)

      這段時間忙壞了,還記得這個主題只寫了上半部分,今天抽點時間把下半段給完結吧。

       該方式主要是使用了System.EnterpriseServices這個命名空間,通過它創建了一個COM+ STA thread的池(pool),並封裝一個調用STA的委託,這樣我寫的方法就可以在STA線程上同步。

      回到我之前寫的程序框架(結構)中,就是在類庫項目中使用這個封裝好的STAInvoker。上層從Web服務的方法中調用類庫項目中的某方法,這個方法中要使用單線程的ActiveX控件,第一次初始化時倒還可以通過,之後返回Web服務層再往類庫項目中調用時,嘿嘿,現在就可以繼續使用這個ActivX控件,再也不“被異常”了(“被XXX”現在不是很流行麼),COM對象與其基礎RCW分開後不能再使用該對象”這個就一去不復返了。

      不過,我在項目中使用時,還是遇到了另外的情況(現在的例子中使用的是WebBrowser控件,我沒試過):使用該ActiveX控件的讀取方法時(比如查詢呀什麼的)沒有問題,正常;但如果使用有寫入操作的方法時(比如在其中生成某些數據),就會報錯,看似爲權限的問題,但不管對文件夾加入了ASPNET帳戶也好IUSR帳戶也好,一直都無法通過。所以要根據情況酌情使用。

      我作的示例代碼已上傳至:

      http://download.csdn.net/source/1865807

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章