共用方式為


同步處理屬性值

同步處理屬性是宣告式屬性,指定您希望元件在啟動時擁有的同步處理類型。 當您包含同步處理屬性時,COM+ 會代表您處理同步處理的詳細數據;您不需要進行任何其他呼叫。

視其需求而定,物件可以共用其呼叫端的同步處理、需要新的同步處理,或在沒有同步處理的情況下運作。

COM+ 提供下列同步處理屬性值:

  • Disabled. 當您停用同步處理屬性時,COM+ 會忽略元件在判斷物件內容的同步處理需求。 因此,物件不一定可以共用其呼叫端的內容(和同步處理)。

    一般而言,當您知道元件永遠不會存取資源管理員時,您應該使用這個屬性值。 將 COM 元件移轉至 COM+ 時,您必須停用同步處理屬性,以維持與未設定 COM 元件相同的行為。 未設定的元件是 COM+ 應用程式中尚未安裝的 COM 元件。

  • 不支援。 不論其呼叫端的狀態為何,具有這個值的對象永遠不會參與同步處理。 此設定僅適用於非交易式元件,且不使用 COM+ Just-In-Time (JIT) 啟用 服務。

  • 支援。 如果物件存在,具有這個值的物件就會參與同步處理。 當您想要物件在其呼叫端的同步處理中共用,但不需要同步處理自己的時,您會宣告此值。

    將同步處理屬性設定為支援的一個好理由是,此設定在系統資源方面可能較不昂貴。 不過,由於需要保護元件免於並行呼叫,因此更難撰寫元件。 將同步處理屬性設定為 Supported 的含意在於,在某些情況下,可能會以未同步處理的方式建立對象的實例。 如果元件的線程模型是 Free 或 Both,您必須使用某種鎖定機制來保護實例數據。 如果線程模型是 Apartment (STA),則不需要保護您的實例數據。

  • 必要。 當您設定此屬性時,COM+ 可確保從元件建立的所有物件都會同步處理。 實際上,每當 COM+ 建立元件的實例時,它可確保一次只會有一個線程通過這個實例。

    當 COM+ 啟動物件時,它會查看其呼叫端的同步處理狀態。 如果呼叫端已同步處理,COM+ 會流動呼叫端的同步處理界限以包含新的物件。 否則,COM+ 會開始同步處理。

  • 需要 New。 具有此值的對象必須參與新的同步處理,其中 COM+ 會代表呼叫中所有元件管理內容和 Apartment。 COM+ 會自動起始新的同步處理,這與呼叫端的同步處理不同。

    將同步處理屬性設定為 [需要新增] 的一個好理由是,此設定可讓您更有效率地對元件的實例進行外部呼叫。 不過,它也會在物件與在系統資源方面建立更昂貴的對象之間進行呼叫。

    例如,假設您的物件及其建立者對象共用相同的同步處理界限的情況。 如果用戶端 A 呼叫建立者物件,而用戶端 B 會呼叫您的物件,則第二個呼叫必須等到第一次呼叫完成為止。 如果您設定 [需要新增],則會在個別的同步處理界限中建立物件。 在此情況下,可以同時處理來自其他物件的呼叫。 不過,從建立者物件到您的物件呼叫需要更多系統資源,因為它們必須跨越同步處理界限。

設定同步處理屬性

同步處理相依性