DecoratorHostShapeBase 類別
雙衍生之 DomainClass DecoratorHostShape 的基底類別
繼承階層架構
System.Object
Microsoft.VisualStudio.Modeling.ModelElement
Microsoft.VisualStudio.Modeling.Diagrams.PresentationElement
Microsoft.VisualStudio.Modeling.Diagrams.ShapeElement
Microsoft.VisualStudio.Modeling.Diagrams.NodeShape
Microsoft.VisualStudio.Modeling.Diagrams.DecoratorHostShapeBase
Microsoft.VisualStudio.Modeling.Diagrams.DecoratorHostShape
命名空間: Microsoft.VisualStudio.Modeling.Diagrams
組件: Microsoft.VisualStudio.Modeling.Sdk.Diagrams.11.0 (在 Microsoft.VisualStudio.Modeling.Sdk.Diagrams.11.0.dll 中)
語法
'宣告
<DisplayNameResourceAttribute("Microsoft.VisualStudio.Modeling.Diagrams.DecoratorHostShape.DisplayName", _
GetType(CoreDesignSurfaceDomainModel), "Microsoft.VisualStudio.Modeling.Diagrams.GeneratedCode.DomainModelResx")> _
<DomainModelOwnerAttribute(GetType(CoreDesignSurfaceDomainModel))> _
<DomainObjectIdAttribute("0ae79fa6-ba68-4042-bf8f-f80e86b0559e")> _
<DescriptionResourceAttribute("Microsoft.VisualStudio.Modeling.Diagrams.DecoratorHostShape.Description", _
GetType(CoreDesignSurfaceDomainModel), "Microsoft.VisualStudio.Modeling.Diagrams.GeneratedCode.DomainModelResx")> _
<CLSCompliantAttribute(True)> _
Public MustInherit Class DecoratorHostShapeBase _
Inherits NodeShape
[DisplayNameResourceAttribute("Microsoft.VisualStudio.Modeling.Diagrams.DecoratorHostShape.DisplayName",
typeof(CoreDesignSurfaceDomainModel), "Microsoft.VisualStudio.Modeling.Diagrams.GeneratedCode.DomainModelResx")]
[DomainModelOwnerAttribute(typeof(CoreDesignSurfaceDomainModel))]
[DomainObjectIdAttribute("0ae79fa6-ba68-4042-bf8f-f80e86b0559e")]
[DescriptionResourceAttribute("Microsoft.VisualStudio.Modeling.Diagrams.DecoratorHostShape.Description",
typeof(CoreDesignSurfaceDomainModel), "Microsoft.VisualStudio.Modeling.Diagrams.GeneratedCode.DomainModelResx")]
[CLSCompliantAttribute(true)]
public abstract class DecoratorHostShapeBase : NodeShape
DecoratorHostShapeBase 型別會公開下列成員。
建構函式
名稱 | 說明 | |
---|---|---|
DecoratorHostShapeBase | 建構函式。 |
回頁首
屬性
名稱 | 說明 | |
---|---|---|
AbsoluteBoundingBox | 圖形時,相對於圖表為單位所度量的矩形。 (繼承自 NodeShape)。 | |
AbsoluteBoundingBoxToEnsureVisible | 取得絕對的週框的DiagramClientView.EnsureVisible。 (繼承自 ShapeElement)。 | |
AbsoluteBounds | 取得或設定的大小和位置,在圖形中,這個週框的網域屬性測量與左上角相對的圖表。 (繼承自 NodeShape)。 | |
AbsoluteCenter | 取得圖案的中心點。 (繼承自 ShapeElement)。 | |
AccessibilityObject | 取得圖案的存取範圍物件。 (繼承自 ShapeElement)。 | |
AccessibleDefaultActionDescription | 取得圖案的預設動作描述。 (繼承自 ShapeElement)。 | |
AccessibleDescription | 取得圖案的描述。 (繼承自 ShapeElement)。 | |
AccessibleHelp | 取得圖案的 [說明]。 (繼承自 ShapeElement)。 | |
AccessibleHelpTopicFileName | 取得圖案中的 [說明] 主題。 (繼承自 ShapeElement)。 | |
AccessibleHelpTopicId | 取得圖案的 [說明] 主題的識別碼。 (繼承自 ShapeElement)。 | |
AccessibleName | 取得形狀的名稱。 (繼承自 ShapeElement)。 | |
AccessibleRole | 取得圖案的角色。 (繼承自 ShapeElement)。 | |
AccessibleState | 取得形狀的狀態。 (繼承自 NodeShape)。 | |
AccessibleValue | 取得圖案的值。 (繼承自 ShapeElement)。 | |
AllowsChildrenInSelection | 如果true,此圖形的子系可以包含在目前的選取項目群組。 (繼承自 ShapeElement)。 | |
AllowsChildrenToResizeParent | true 如果此圖形可調整大小或子圖案的位置變更時的大小。 (繼承自 ShapeElement)。 | |
AllowsChildrenToShrinkParent | 如果為 true,此圖形會減少大小,以適合及其子系,re-sized 或移動時。 (繼承自 ShapeElement)。 | |
Anchoring | 描述應該如何放置圖形並將其如父系圖形移動並調整大小自動調整本身。改變要求傳回的物件。 (繼承自 NodeShape)。 | |
AutoResizeParentOnBoundsChange | 取得子圖案,並確認 [絕對的子圖案範圍變更時,是否應該調整大小與其父圖案。 (繼承自 NodeShape)。 | |
BackgroundBrushId | 取得用來繪製圖案的背景的筆刷的 ID。 (繼承自 ShapeElement)。 | |
BackgroundGradientMode | 取得圖案的背景漸層。 (繼承自 NodeShape)。 | |
BoundingBox | 取得圖形時,測量相對於 ParentShape 的週框。 (繼承自 NodeShape)。 | |
Bounds | 取得或設定的大小和位置,在圖形中,這個週框的網域屬性測量與左上角相對ParentShape。 (繼承自 NodeShape)。 | |
BoundsRules | 範圍規則限制的大小和位置,這個週框,使用者可以更新的方式。傳回 BoundsRules 的覆寫。 (繼承自 NodeShape)。 | |
CanExpandAndCollapse | 取得圖形,並確認使用者是否可以展開與摺疊該。 (繼承自 NodeShape)。 | |
CanFocus | 取得圖形,並確認是否就能收到焦點。 (繼承自 ShapeElement)。 | |
CanMove | 取得圖形,並確認是否使用者可以移動它。 (繼承自 ShapeElement)。 | |
CanResize | 取得圖形,並確認是否使用者可以調整。 (繼承自 NodeShape)。 | |
CanSelect | 取得圖形,並確認是否使用者可以選取它。 (繼承自 ShapeElement)。 | |
Center | 取得圖案的中心點。 (繼承自 ShapeElement)。 | |
ClassStyleSet | 取得設定圖案的樣式。 (繼承自 ShapeElement)。 | |
ClipWhenDrawingFields | 取得子圖形,並確認是否其剪取區域應該設定為父圖案的週框方塊繪製到下層圖形時。 (繼承自 ShapeElement)。 | |
ConnectionPoints | 在周邊網路上的圖形,連接器可以用來終止的點的清單。根據預設,圖形會有任何的連接點,起始與連接器可以會戰上任何一處終止。 (繼承自 NodeShape)。 | |
Decorators | 取得圖案裝飾的集合。 (繼承自 ShapeElement)。 | |
DefaultContainerMargin | 取得父圖案和其巢狀的子圖案之間的邊界。 (繼承自 NodeShape)。 | |
DefaultShapeField | 取得預設圖案,也就是可以接收焦點的第一個圖案。 (繼承自 ShapeElement)。 | |
DefaultSize | 取得圖案的預設大小。 (繼承自 ShapeElement)。 | |
Diagram | 取得圖形所屬的圖表。 (繼承自 ShapeElement)。 | |
EnsureVisiblePreference | 此圖形的 EnsureVisible 方法的喜好設定。預設值,就會傳回 VisiblePreference,裝載此圖形的圖表。 (繼承自 ShapeElement)。 | |
Events | 取得圖案中的事件處理常式的清單。 (繼承自 ShapeElement)。 | |
FixedFlags | 取得旗標,以決定是否要將圖形固定至它在圖表上的位置。 (繼承自 NodeShape)。 | |
FromRoleLinkShapes | 取得此圖形是來源的連結圖形集合。 (繼承自 NodeShape)。 | |
GeometryBackgroundBrushId | 取得用來繪製之幾何的背景的筆刷的 ID。 (繼承自 ShapeElement)。 | |
GeometryBoundingBox | 取得圖案的週框方塊。 (繼承自 ShapeElement)。 | |
GeometryCanResizeBottom | 取得圖形,並確認是否使用者可以調整垂直,開始於下方。 (繼承自 NodeShape)。 | |
GeometryCanResizeLeft | 取得圖形,並確認是否使用者可以調整水平,從左邊開始。 (繼承自 NodeShape)。 | |
GeometryCanResizeRight | 取得圖形,並確認是否使用者可以調整水平方向起開始生效的權限。 (繼承自 NodeShape)。 | |
GeometryCanResizeTop | 取得圖形,並確認是否使用者可以調整垂直,從頂端開始。 (繼承自 NodeShape)。 | |
GeometryHasFilledBackground | 取得圖形,並驗證是否繪製背景。 (繼承自 ShapeElement)。 | |
GeometryHasOutline | 取得圖形,並確認其是否有外框。 (繼承自 ShapeElement)。 | |
GeometryHasShadow | true 如果圖案有陰影。 否則, false。 (繼承自 ShapeElement)。 | |
GeometryOutlinePenId | 取得畫筆來繪製圖案的外框的識別碼。 (繼承自 ShapeElement)。 | |
GeometryStyleSet | 取得設定圖案的樣式。 (繼承自 ShapeElement)。 | |
GridSize | 如果不是零,此圖形及其子系將貼齊格線的大小。預設值是 ParentShape.GridSize。 (繼承自 ShapeElement)。 | |
HasAnchoring | 如果沒有錨定中的任何設定,則為 true。 (繼承自 NodeShape)。 | |
HasBackgroundGradient | 取得圖形,並確認其是否有其背景為漸層。 (繼承自 NodeShape)。 | |
HasChildren | true 如果圖案有子系圖形。 (繼承自 ShapeElement)。 | |
HasConnectionPoints | 如果不是空的 [ConnectionPoints] 清單中,則為 true。 (繼承自 NodeShape)。 | |
HasCustomToolTip | 取得圖形,並確認其是否有自訂的工具提示。 (繼承自 ShapeElement)。 | |
HasDragOverToolTip | 取得圖形,並確認其是否有工具提示。 (繼承自 ShapeElement)。 | |
HasFilledBackground | 取得圖形,並驗證它是否有背景。 (繼承自 ShapeElement)。 | |
HasHighlighting | 取得圖形,並驗證它是否會反白顯示。 (繼承自 ShapeElement)。 | |
HasOutline | 取得圖形,並確認其是否有外框。 (繼承自 ShapeElement)。 | |
HasShadow | 取得圖形,並驗證它是否有陰影。 (繼承自 ShapeElement)。 | |
HasToolTip | 取得圖形,並確認其是否有工具提示。 (繼承自 ShapeElement)。 | |
Id | 取得項目的 ID。 (繼承自 ModelElement)。 | |
IsActive | 取得 IsActive 旗標,並確認,查看是否為作用中的項目。 (繼承自 ModelElement)。 | |
IsDeleted | 取得 IsDeleted 旗標和檢查,以查看是否已從模型刪除的項目。 (繼承自 ModelElement)。 | |
IsDeleting | 取得 IsDeleting 旗標,並驗證是否將項目從模型來刪除。 (繼承自 ModelElement)。 | |
IsExpanded | 取得的圖案,並確認或設定是否已展開。 (繼承自 NodeShape)。 | |
IsNestedChild | true 這個圖形項目是否位於NestedChildShapes的其ParentShape。 (繼承自 ShapeElement)。 | |
IsPlaceRouteNode | 如果可以調整圖形的位置,則為 true。 (繼承自 NodeShape)。 | |
IsPort | true 如果圖形是連接埠 」 圖形。 否則, false。 (繼承自 NodeShape)。 | |
IsRelativeChild | true 這個圖形項目是否位於RelativeChildShapes的其ParentShape。 (繼承自 ShapeElement)。 | |
IsVisible | 如果true,圖形會顯示在圖表中。 如果false、 沒有出現,以及版面配置和路由的演算法會略過它。請參閱 Hide() 和訊息。 (繼承自 ShapeElement)。 | |
LayoutObjectFixedFlags | 取得或設定決定圖表內的圖形是否已修正至它的位置,在圖表上的旗標。 (繼承自 NodeShape)。 | |
LineAdjustAwayDefault | 取得的圖案,並驗證子類型連結圖形是否應該嘗試連線到相同的圖形時,將對齊或設定這個值。 (繼承自 ShapeElement)。 | |
LineAffinityDefault | 取得或設定 [連結] 圖形應該嘗試將圖形放置的目標位置。 (繼承自 ShapeElement)。 | |
LineToLineClearance | 取得或設定此圖形的子系連結圖形間的距離。 (繼承自 ShapeElement)。 | |
LineToNodeClearance | 取得或設定子系連結圖形和子節點] 圖形之間的距離。 (繼承自 ShapeElement)。 | |
Link | 取得將圖形連結的清單。 (繼承自 NodeShape)。 | |
Location | 取得或設定相對於其 ParentShape 的圖案範圍的左上角的座標。 (繼承自 NodeShape)。 | |
ManuallyPlaced | 取得或設定 ManuallyPlaced 網域屬性的值。描述放 Microsoft.VisualStudio.Modeling.Diagrams.DecoratorHostShape.Manually | |
ManuallySized | 取得或設定 ManuallySized 網域屬性的值。調整大小的 Microsoft.VisualStudio.Modeling.Diagrams.DecoratorHostShape.Manually 的描述 | |
MaximumSize | 取得圖案的最大值。 (繼承自 ShapeElement)。 | |
MinimumResizableSize | 取得形狀可以調整大小的最小大小。 (繼承自 NodeShape)。 | |
MinimumSize | 取得圖案的大小最小值。 (繼承自 NodeShape)。 | |
ModelElement | 取得或設定簡報項目相關聯的模型項目。 (繼承自 PresentationElement)。 | |
NestedChildShapes | 屬於此圖形中,且圖案清單限制為此圖形或圖表的邊界內會出現。 (繼承自 ShapeElement)。 | |
NestedShapesMargin | 取得圖形的週框方塊和其巢狀的節點圖形之間的邊界。 (繼承自 ShapeElement)。 | |
NodeToNodeClearance | 取得或設定子節點] 圖形之間的邊界。 (繼承自 ShapeElement)。 | |
OutlinePenId | 取得用來繪製圖案的外框的畫筆的 ID。 (繼承自 ShapeElement)。 | |
OutlinePenWidth | 取得圖案的外框的寬度。 (繼承自 ShapeElement)。 | |
PaintMoveableDecoratorSelectionLines | (繼承自 ShapeElement)。 | |
ParentLink | 取得關聯性執行個體的圖案脫離父圖案。 (繼承自 ShapeElement)。 | |
ParentShape | 取得父代圖形項目。若要才會出現在圖表上,圖形或連接器必須具有父代。 (繼承自 ShapeElement)。 | |
Partition | 取得或設定Partition所包含的項目。 (繼承自 ModelElement)。 | |
Perimeter | 取得圖案周圍的外圍 (路徑)。 (繼承自 ShapeElement)。 | |
PortFixedFlags | 取得旗標,以決定連接埠圖形是否已修正它的位置。 (繼承自 NodeShape)。 | |
RelatedShapeToEmphasize | 取得此圖形選取時,以視覺化方式強調使用者相關的圖案。 (繼承自 ShapeElement)。 | |
RelativeChildShapes | 屬於此圖形,但可能會出現此圖形的界限之外的圖形清單。 (繼承自 ShapeElement)。 | |
ResizableSides | 取得使用者可以調整大小的圖形的側邊。 (繼承自 NodeShape)。 | |
ShapeFields | 例如,文字的資料列和裝飾圖形部份。 (繼承自 ShapeElement)。 | |
ShapeGeometry | 取得圖形,例如矩形、 RoundedRectangle 或定義作業相關聯的圖形外框的橢圓形的幾何。 (繼承自 ShapeElement)。 | |
ShouldAutoPlaceChildShapes | 取得圖形,並確認是否與其巢的狀子圖形會自動放置在圖表上。 (繼承自 NodeShape)。 | |
ShouldTryParentShapeForMergeOnToolboxDoubleClick | 如果為 true,當使用者使用此選取圖形時,按兩下工具箱項目無法與此圖形中,合併工具將會嘗試合併,以隨著父圖案。預設值為 true。 (繼承自 ShapeElement)。 | |
Size | 取得或設定圖案的大小。 (繼承自 NodeShape)。 | |
Store | 取得Store所包含的項目。 (繼承自 ModelElement)。 | |
StyleSet | 取得樣式設定圖形的執行個體。 (繼承自 ShapeElement)。 | |
Subject | 取得或設定簡報項目的主題。預設為相同的物件,做為ModelElement。 (繼承自 PresentationElement)。 | |
TargetToolboxItemFilterAttributes | 取得屬性,以決定啟用或停用 [工具箱] 中的項目集合。 (繼承自 ShapeElement)。 | |
ToRoleLinkShapes | 取得集合,此圖形做為目標的連結圖形。 (繼承自 NodeShape)。 | |
ZOrder | 決定在此圖形將會相對於其他圖案在圖表上的順序。通常會設定從子類型圖形的順序。 (繼承自 ShapeElement)。 |
回頁首
方法
回頁首
事件
名稱 | 說明 | |
---|---|---|
AbsoluteBoundsChanged | 發生於變更的圖形周圍的絕對值。 (繼承自 NodeShape)。 | |
Click | 發生於使用者按一下滑鼠置於圖形之上。 (繼承自 ShapeElement)。 | |
DoubleClick | 發生於使用者按兩下滑鼠。 (繼承自 ShapeElement)。 | |
KeyDown | 當使用者按下某個按鍵時發生。 (繼承自 ShapeElement)。 | |
KeyPress | 當使用者按下並放開按鍵時發生。 (繼承自 ShapeElement)。 | |
KeyUp | 發生於使用者放開按鍵時。 (繼承自 ShapeElement)。 | |
MouseDown | 當使用者按下滑鼠按鈕時發生。 (繼承自 ShapeElement)。 | |
MouseMove | 當使用者移動滑鼠時發生。 (繼承自 ShapeElement)。 | |
MouseUp | 發生於使用者放開滑鼠按鈕。 (繼承自 ShapeElement)。 | |
MouseWheel | 而使用者轉動滑鼠滾輪時發生。 (繼承自 ShapeElement)。 |
回頁首
擴充方法
名稱 | 說明 | |
---|---|---|
AddExtension(Guid) | 多載。 延伸此 ModelElement 已識別的網域型別的新執行個體化的副檔名。如果項目已經有該類型的副檔名,將會擲回的 InvalidOperationException。 (以 ModelElementExtensionMethods 定義。) | |
AddExtension(Type) | 多載。 延伸此 ModelElement,以指定之型別的新執行個體化的副檔名。如果項目已經有該類型的副檔名,將會擲回的 InvalidOperationException。 (以 ModelElementExtensionMethods 定義。) | |
AddExtension(DomainClassInfo) | 多載。 延伸此 ModelElement 指定的網域型別的新執行個體化的副檔名。如果項目已經有該類型的副檔名,將會擲回的 InvalidOperationException。 (以 ModelElementExtensionMethods 定義。) | |
AddExtension(ExtensionElement) | 多載。 擴充帶有特定延伸此 ModelElement。如果項目已經有相同類型的副檔名,將會擲回的 InvalidOperationException。 (以 ModelElementExtensionMethods 定義。) | |
AddExtension<T>() | 多載。 延伸此 ModelElement 特定型別的新執行個體化的副檔名。如果項目已經有相同類型的副檔名,將會擲回的 InvalidOperationException。 (以 ModelElementExtensionMethods 定義。) | |
CanDelete | 從模型中刪除的項目。 (以 ImmutabilityExtensionMethods 定義。) | |
GetAllExtensions | 傳回可列舉,以便在執行、 強效且具內嵌在這個 ModelElement 的第一個周遊整個樹狀結構的延伸項目。 (以 ModelElementExtensionMethods 定義。) | |
GetBaseElement | 傳回用來加入指定的 ModelElement 虛擬 MEL 的根目錄。 (以 ModelElementExtensionMethods 定義。) | |
GetDslDefinitionModelElement | 這個方法保證傳回對應於 PresentationElement 的真實模型項目。 就 DslDesigner PEL 而言,對應的主題實際上可能是內部 TreeNode 類別而不是實際的 MEL。 這個方法正確地處理這些案例,如此會傳回實際的 MEL。 (以 PresentationElementHelper 定義。) | |
GetExtension(Guid) | 多載。 (以 ModelElementExtensionMethods 定義。) | |
GetExtension(Type) | 多載。 取得指定之型別的 ExtensionElement,從可用的延伸此 ModelElement。如果沒有這類的延伸項目將會產生 InvalidOperationException。 (以 ModelElementExtensionMethods 定義。) | |
GetExtension(DomainClassInfo) | 多載。 (以 ModelElementExtensionMethods 定義。) | |
GetExtension<T>() | 多載。 取得指定之型別的 ExtensionElement,從可用的延伸此 ModelElement。如果沒有這類的延伸項目將會產生 InvalidOperationException。 (以 ModelElementExtensionMethods 定義。) | |
GetLocks | 取得這個項目鎖定旗標。這會包括任何包含項目的的磁碟分割上啟用的鎖定。 (以 ImmutabilityExtensionMethods 定義。) | |
IsExtendedBy(Guid) | 多載。 查詢是否依特定類型的 ExtensionElement 目前延伸此 ModelElement。 (以 ModelElementExtensionMethods 定義。) | |
IsExtendedBy(Type) | 多載。 查詢是否依特定類型的 ExtensionElement 目前延伸此 ModelElement。 (以 ModelElementExtensionMethods 定義。) | |
IsExtendedBy(DomainClassInfo) | 多載。 查詢是否依特定類型的 ExtensionElement 目前延伸此 ModelElement。 (以 ModelElementExtensionMethods 定義。) | |
IsLocked | 測試是否這個項目會有任何一組指定的鎖定 (以 ImmutabilityExtensionMethods 定義。) | |
RemoveExtension(Type) | 多載。 移除其他的特定型別的這個 ModelElement 的副檔名。 (以 ModelElementExtensionMethods 定義。) | |
RemoveExtension(Guid) | 多載。 移除屬於特定型別指定任何的 ModelElement 副檔名。 (以 ModelElementExtensionMethods 定義。) | |
RemoveExtension(DomainClassInfo) | 多載。 移除屬於特定型別指定任何的 ModelElement 副檔名。 (以 ModelElementExtensionMethods 定義。) | |
RemoveExtension(ExtensionElement) | 多載。 指定的 ExtensionElement 移除這個 ModelElement 的副檔名。 (以 ModelElementExtensionMethods 定義。) | |
SetLocks | 設定這個項目的鎖定旗標 (以 ImmutabilityExtensionMethods 定義。) | |
TryGetExtension(Guid) | 多載。 (以 ModelElementExtensionMethods 定義。) | |
TryGetExtension(Type) | 多載。 (以 ModelElementExtensionMethods 定義。) | |
TryGetExtension(DomainClassInfo) | 多載。 (以 ModelElementExtensionMethods 定義。) | |
TryGetExtension<T>() | 多載。 取得指定之型別的 ExtensionElement,從可用的延伸此 ModelElement。如果這個項目有沒有這類副檔名結果會是 null。 (以 ModelElementExtensionMethods 定義。) |
回頁首
欄位
名稱 | 說明 | |
---|---|---|
DomainClassId | DecoratorHostShape 網域類別識別碼。 | |
ManuallyPlacedDomainPropertyId | ManuallyPlaced 的網域內容識別碼。 | |
ManuallySizedDomainPropertyId | ManuallySized 的網域內容識別碼。 |
回頁首
明確介面實作
名稱 | 說明 | |
---|---|---|
IMergeElements.CanMerge | 如果這個項目可以合併具有原型的內容,則傳回 true。 (繼承自 ModelElement)。 | |
IMergeElements.ChooseMergeTarget(ElementGroup) | (繼承自 ModelElement)。 | |
IMergeElements.ChooseMergeTarget(ElementGroupPrototype) | (繼承自 ModelElement)。 | |
IMergeElements.MergeConfigure | (繼承自 ModelElement)。 | |
IMergeElements.MergeDisconnect | (繼承自 ModelElement)。 | |
IMergeElements.MergeRelate | (繼承自 ModelElement)。 |
回頁首
執行緒安全
這個型別的任何 Public static (在 Visual Basic 中為 Shared) 成員都具備執行緒安全。不保證任何執行個體成員是安全執行緒。