共用方式為


TelemetrySession 類別

定義

表示可以張貼遙測事件和會話屬性的一個遙測會話。 API 會盡最大努力將遙測數據傳遞至伺服器。 要求會以批次方式排入佇列並傳送。 如果進程結束之前無法傳送事件,事件將會儲存在本機。 當下一個應用程式實例呼叫遙測 API 時,傳送將會繼續。 當進程沒有回應或嚴重損毀或沒有因特網連線 30 天時,遙測可能會遺失。 所有方法都是安全線程,並立即傳回。

public ref class TelemetrySession : Microsoft::VisualStudio::Telemetry::TelemetryDisposableObject
public class TelemetrySession : Microsoft.VisualStudio.Telemetry.TelemetryDisposableObject
type TelemetrySession = class
    inherit TelemetryDisposableObject
Public Class TelemetrySession
Inherits TelemetryDisposableObject
繼承

建構函式

TelemetrySession(String)

根據 TelemetrySessionSettings 實例的串行化字串,建立新的遙測會話。 使用 TelemetrySession 實例的 SerializeSettings 方法來取得這類字串。 這可讓進程將事件從另一個進程張貼到遙測會話。 使用 VSTelemetryService.DefaultSession 來存取應用程式會話。

欄位

DefaultContextName

默認內容名稱。

ValueNotAvailable

無法使用之值的常數。

屬性

AppId

取得或設定 SQM 的應用程式識別碼

BucketFiltersToAddDumpsToFaults

取得或設定值,指出應該針對錯誤事件新增哪些貯體進程傾印。

BucketFiltersToEnableWatsonForFaults

取得或設定值,指出應針對錯誤事件啟用 Watson 報告的值區。

CalculatedSamplings

從指令清單檔取得/設定計算取樣

CancellationToken

取得遙測會話的 CancellationToken

CanCollectPrivateInformation

取得值,指出目前的會話是否可以根據使用者資訊管理員的答案收集 PII 資訊

GlobalStorageUri

從 VS Code 取得全域記憶體 URI

HostName

取得或設定遙測主機名,其會影響指令清單檔案位置

IsDisposed

取得值,指出會話是否被取代 - 偵測備援呼叫

(繼承來源 TelemetryDisposableObject)
IsOptedIn

取得或設定值,指出是否選擇加入使用者。

IsUserMicrosoftInternal

取得值,指出目前的會話是否屬於內部使用者,因此可以根據使用者資訊管理員的答案收集資訊

MacAddressHash

取得 MAC 位址哈希。 如果在本機記憶體中找不到哈希,則會傳回0個哈希,並叫用哈希程式

MachineId

取得 (SQM 機器識別碼)

SessionId

取得會話標識碼。

TimeSinceSessionStart

取得 TimeSinceSessionStart,以防客戶想要使用它根據相同的演算法遙測來計算自定義延遲。

UserId

取得 (SQM 使用者識別碼)

方法

AddCommonPropertyRange(IDictionary<String,Object>)

新增可能適用於所有會話事件的屬性,但不應該有 Default.Context 前置詞。 在工作階段之間不會保存屬性。 若要新增單一屬性,請參閱 TryAddCommonProperty(String, Object)

AddSessionChannel(ISessionChannel)

將新的工作階段通道新增至使用中的通道清單。

CreateContext(String)

Create 具有特定名稱的內容。

Dispose()

此程式代碼已新增至正確實作可處置模式。

(繼承來源 TelemetryDisposableObject)
DisposeManagedResources()

Dispose 模式的受保護實作。

DisposeToNetworkAsync(CancellationToken)

以異步方式處置並嘗試透過網路傳送所有遙測。

GetCommonPropertyDictionary()

取得 IDictionary,其中包含目前在會話中 CommonProperty 索引鍵和值的複本。

GetContext(String)

依指定的名稱取得內容。

GetPersistedSharedProperty(String)

依名稱取得保存的共享屬性。

GetPropertyBag(String)

依指定的名稱取得屬性包。

GetSharedProperty(String)

依名稱取得共享屬性。

GetSharedPropertyAsObject(String)

依名稱取得共用屬性的值做為物件。

PostEvent(String)

將要張貼到伺服器的遙測事件排入佇列。 如果名稱是唯一的事件屬性,請選擇這個方法以求簡單。 您應該考慮選擇 PostUserTask、PostOperation、PostFault 或 PostAsset。 這些會透過Visual Studio資料模型所提供的其他深入解析,提供更豐富的遙測體驗。 如果您的數據點與任何 VS 數據模型實體不一致,請勿強制任何關聯並繼續使用此方法。 如果您有關於 VS 數據模型的任何問題,請傳送電子郵件給 VS 數據模型小組 (vsdmcrew@microsoft.com) 。

PostEvent(TelemetryEvent)

將要張貼到伺服器的遙測事件排入佇列。 選擇這個方法以取得彈性。 您應該考慮選擇 PostUserTask、PostOperation、PostFault 或 PostAsset。 這些會透過Visual Studio資料模型所提供的其他深入解析,提供更豐富的遙測體驗。 如果您的數據點與任何 VS 數據模型實體不一致,請勿強制任何關聯並繼續使用此方法。 如果您有關於 VS 數據模型的任何問題,請傳送電子郵件給 VS 數據模型小組 (vsdmcrew@microsoft.com) 。

PostMetricEvent(TelemetryMetricEvent)

藉由填入計量屬性來準備計量事件,然後張貼事件。

PostProperty(String, Object)

將整個會話屬性的更新排入佇列。 您可能想要考慮 TelemetrySettingProperty ,或 TelemetryMetricProperty 這些會利用 Visual Studio 數據模型所提供的其他深入解析來啟用更豐富的遙測體驗。 如果您有關於 VS 數據模型的任何問題,請傳送電子郵件給 VS 數據模型小組 (vsdmcrew@microsoft.com) 。

PostRecurringProperty(String, Object)

加入要包含在定期週期性 VS/TelemetryApi/RecurringProperties 事件上的屬性。 不同於 PostProperty 或 TelemetryContext.PostProperty,PostRecurringProperty 不會將指定的屬性新增至每個事件。 PostRecurringProperty 最適合用於 TelemetrySession 存留期常數的值。

RegisterForReliabilityEvent()

將進程和會話資訊寫入任何主機 VS IDE 所使用的登錄,以追蹤並報告此程式的最終關機狀態。

RegisterPropertyBag(String, TelemetryPropertyBag)

註冊指定的屬性包。

RemovePersistedSharedProperty(String)

拿掉所有工作階段的保存共享屬性表示從這個預設內容中移除共用屬性,以及電腦上任何未來的工作階段。

RemoveSharedProperty(String)

拿掉工作階段的共享屬性表示從預設內容移除共享屬性

RequiresNotDisposed()

如果處置物件,此函式會擲回 ObjectDisposedException。

(繼承來源 TelemetryDisposableObject)
SerializeSettings()

串行化 TelemetrySessionSettings 物件。

SetPersistedSharedProperty(String, Double)

設定工作階段的保存共享屬性表示為此工作階段的預設內容設定共用屬性,以及電腦上任何未來的工作階段。

SetPersistedSharedProperty(String, String)

設定工作階段的保存共享屬性表示為此工作階段的預設內容設定共用屬性,以及電腦上任何未來的工作階段。

SetSharedProperty(String, Object)

設定會話的共用屬性表示您可以考慮 TelemetrySettingProperty 的預設內容設定共用屬性,否則 TelemetryMetricProperty 這些會啟用更豐富的遙測體驗,並提供Visual Studio資料模型所提供的其他見解。 如果您有關於 VS 數據模型的任何問題,請傳送電子郵件給 VS 數據模型小組 (vsdmcrew@microsoft.com) 。

Start()

啟動工作階段表示建立工作階段的預設內容,並在允許時新增私用資訊屬性。

ToString()

ToString 讓偵錯更容易:在偵錯 watch 視窗中顯示

TryAddCommonProperty(String, Object)

嘗試為會話的所有事件新增單一屬性索引鍵和值,但不應該有 Context 前置詞。 在工作階段之間不會保存屬性。 若要新增多個屬性,請參閱 AddCommonPropertyRange(IDictionary<String,Object>)

TryGetCommonPropertyValue(String, Object)

取得與指定屬性名稱相關聯的值,這個名稱會與會話的所有事件通用,但不應該有內容或保留前置詞。

UnregisterPropertyBag(String)

使用指定的名稱取消註冊屬性包。

UseVsIsOptedIn()

讀取和設定 VS OptIn 狀態。 根據所有已安裝 VS 版本的 OptedIn 狀態計算 IsOptedIn 狀態。 如果所有找到的 OptedIn 狀態都是 true,我們會傳回 true,否則會傳回 false。

UseVsIsOptedIn(String)

讀取和設定 VS OptIn 狀態。

擴充方法

PostCorrelatedFaultEvent(TelemetrySession, TelemetryScope<OperationEvent>, String, String, FaultSeverity, Exception, Func<IFaultUtility,Int32>)

FaultEvent張貼與 相互關聯的 operationsession

PostCorrelatedFaultEvent(TelemetrySession, TelemetryScope<OperationEvent>, String, String, Exception, Func<IFaultUtility,Int32>)

FaultEvent張貼與 相互關聯的 operationsession

PostCommandLineFlags(TelemetrySession, IEnumerable<String>, IDictionary<String,Object>)

使用命令行旗標資訊將遙測事件排入佇列,並將其他屬性張貼至伺服器。 只會包含) 指定前置詞所識別的命令行旗標 (。

PostCommandLineFlags(TelemetrySession, String[])

將遙測事件排入佇列,其中包含要張貼至伺服器的命令行旗標資訊。 只會包含) 指定前置詞所識別的命令行旗標 (。

PostAsset(TelemetrySession, String, String, Int32, IDictionary<String,Object>, TelemetryEventCorrelation[])

張貼資產事件。 資產是使用者工作或作業的目標,例如 Solution、Project、File、Extension、License、Designer。

PostFault(TelemetrySession, String, String)

張貼Fault事件。 事件一律會傳送至 AppInsights,但如果它通過取樣,也會張貼到 Wason。 與 或 相互關聯 UserTaskEventOperationEvent 可能會導致發生錯誤時,它會變得更有用。

PostFault(TelemetrySession, String, String, FaultSeverity)

張貼Fault事件。 事件一律會傳送至 AppInsights,但如果它通過取樣,也會張貼到 Wason。 與 或 相互關聯 UserTaskEventOperationEvent 可能會導致發生錯誤時,它會變得更有用。

PostFault(TelemetrySession, String, String, FaultSeverity, Exception)

使用Managed Exception物件張貼錯誤事件。 貯體參數是從例外狀況物件建立的。 與 或 相互關聯 UserTaskEventOperationEvent 可能會導致發生錯誤時,它會變得更有用。

PostFault(TelemetrySession, String, String, FaultSeverity, Exception, Func<IFaultUtility,Int32>)

張貼具有例外狀況物件和回呼的錯誤事件。 回呼可用來計算要傳送至 Watson 後端的昂貴數據,例如 JScript 呼叫堆棧等,在與 UserTaskEvent 或相互關聯或 OperationEvent 可能導致發生錯誤時會變得更有用。

PostFault(TelemetrySession, String, String, FaultSeverity, Exception, Func<IFaultUtility,Int32>, TelemetryEventCorrelation[])

張貼具有例外狀況物件和回呼的錯誤事件。 回呼可用來計算要傳送至 Watson 後端的昂貴數據,例如 JScript 呼叫堆棧等,在與 UserTaskEvent 或相互關聯或 OperationEvent 可能導致發生錯誤時會變得更有用。

PostFault(TelemetrySession, String, String, Exception)

使用Managed Exception物件張貼錯誤事件。 貯體參數是從例外狀況物件建立的。 與 或 相互關聯 UserTaskEventOperationEvent 可能會導致發生錯誤時,它會變得更有用。

PostFault(TelemetrySession, String, String, Exception, Func<IFaultUtility,Int32>)

張貼具有例外狀況物件和回呼的錯誤事件。 回呼可用來計算要傳送至 Watson 後端的昂貴數據,例如 JScript 呼叫堆棧等,在與 UserTaskEvent 或相互關聯或 OperationEvent 可能導致發生錯誤時會變得更有用。

PostFault(TelemetrySession, String, String, Exception, Func<IFaultUtility,Int32>, TelemetryEventCorrelation[])

張貼具有例外狀況物件和回呼的錯誤事件。 回呼可用來計算要傳送至 Watson 後端的昂貴數據,例如 JScript 呼叫堆棧等,在與 UserTaskEvent 或相互關聯或 OperationEvent 可能導致發生錯誤時會變得更有用。

PostOperation(TelemetrySession, String, TelemetryResult, String, TelemetryEventCorrelation[])

張貼 Operation 事件。 作業會在應用程式中執行一些工作,併產生結果 (例如成功、失敗) 。 如果使用者直接叫用作業,請使用 UserTaskEvent 或相關方法。 作業的一些範例包括授權檢查、套件載入、Windows 版面配置載入。

這個方法用於非常快速執行的不可部分完成作業,或沒有值可分析進程持續時間。 呼叫端會在作業完成時呼叫這個方法。 對於長時間執行或異步操作,若要了解時間期間發生的其他狀況,或追蹤是否因為錯誤而部分完成,請使用追蹤起點和終點的方法 StartOperation(TelemetrySession, String)

PostUserTask(TelemetrySession, String, TelemetryResult, String, TelemetryEventCorrelation[])

張貼使用者工作的事件。 使用者工作是直接由 USER 叫用的應用程式作業,其結果 (例如成功、失敗) 。 用於用戶行為/意圖分析。 使用者知道作業並能夠執行。 例如,開啟專案和顯示工具視窗是使用者工作;而是載入 VS 套件和設計時間建置是作業。

這個方法用於執行非常快速或只有少量價值可分析進程持續時間的不可部分完成使用者工作。 呼叫端會在使用者工作完成時呼叫這個方法。 對於長時間執行或異步使用者工作,若要了解時間期間發生的其他狀況,或追蹤是否因為錯誤而部分完成,請使用追蹤起點和終點的方法 StartUserTask(TelemetrySession, String)

StartOperation(TelemetrySession, String)

藉由在作業工作開始時張貼 OperationEvent ,並傳回 TelemetryScope<T> 物件,以開始追蹤作業。 當使用者工作完成時,呼叫 方法來 End(TelemetryResult, String) 張貼另一個 OperationEvent 結束點。 因為開始和結束事件都使用相同的事件名稱,所以請勿在事件名稱中使用 Start 或 End。

StartOperation(TelemetrySession, String, TelemetryScopeSettings)

在作業工作開始時張貼 OperationEvent 具有指定屬性的 ,然後傳回 TelemetryScope<T> 物件,以開始追蹤作業。 當使用者工作完成時,呼叫 方法來 End(TelemetryResult, String) 張貼另一個 OperationEvent 結束點。 因為開始和結束事件都使用相同的事件名稱,所以請勿在事件名稱中使用 Start 或 End。

StartOperation(TelemetrySession, String, TelemetrySeverity)

藉由在作業工作開始時張貼 OperationEvent ,並傳回 TelemetryScope<T> 物件,以開始追蹤作業。 當使用者工作完成時,呼叫 方法來 End(TelemetryResult, String) 張貼另一個 OperationEvent 結束點。 因為開始和結束事件都使用相同的事件名稱,所以請勿在事件名稱中使用 Start 或 End。

StartOperation(TelemetrySession, String, TelemetrySeverity, IDictionary<String,Object>)

在作業工作開始時張貼 OperationEvent 具有指定屬性的 ,然後傳回 TelemetryScope<T> 物件,以開始追蹤作業。 當使用者工作完成時,呼叫 方法來 End(TelemetryResult, String) 張貼另一個 OperationEvent 結束點。 因為開始和結束事件都使用相同的事件名稱,所以請勿在事件名稱中使用 Start 或 End。

StartOperation(TelemetrySession, String, TelemetrySeverity, IDictionary<String,Object>, TelemetryEventCorrelation[])

在作業工作開始時張貼 OperationEvent 具有指定屬性的 ,然後傳回 TelemetryScope<T> 物件,以開始追蹤作業。 當使用者工作完成時,呼叫 方法來 End(TelemetryResult, String) 張貼另一個 OperationEvent 結束點。 因為開始和結束事件都使用相同的事件名稱,所以請勿在事件名稱中使用 Start 或 End。

StartUserTask(TelemetrySession, String)

在使用者工作開始時張貼 UserTaskEvent ,然後傳回 TelemetryScope<T> 物件,以開始追蹤使用者工作。 當使用者工作完成時,呼叫 方法來 End(TelemetryResult, String) 張貼另一個 UserTaskEvent 結束點。 因為開始和結束事件都使用相同的事件名稱,所以請勿在事件名稱中使用 Start 或 End。

StartUserTask(TelemetrySession, String, TelemetryScopeSettings)

在使用者工作開始時張貼 UserTaskEvent 具有指定屬性的 ,然後傳回 TelemetryScope<T> 物件,以開始追蹤使用者工作。 當使用者工作完成時,呼叫 方法來 End(TelemetryResult, String) 張貼另一個 UserTaskEvent 結束點。 因為開始和結束事件都使用相同的事件名稱,所以請勿在事件名稱中使用 Start 或 End。

StartUserTask(TelemetrySession, String, TelemetrySeverity)

在使用者工作開始時張貼 UserTaskEvent ,然後傳回 TelemetryScope<T> 物件,以開始追蹤使用者工作。 當使用者工作完成時,呼叫 方法來 End(TelemetryResult, String) 張貼另一個 UserTaskEvent 結束點。 因為開始和結束事件都使用相同的事件名稱,所以請勿在事件名稱中使用 Start 或 End。

StartUserTask(TelemetrySession, String, TelemetrySeverity, IDictionary<String,Object>)

在使用者工作開始時張貼 UserTaskEvent 具有指定屬性的 ,然後傳回 TelemetryScope<T> 物件,以開始追蹤使用者工作。 當使用者工作完成時,呼叫 方法來 End(TelemetryResult, String) 張貼另一個 UserTaskEvent 結束點。 因為開始和結束事件都使用相同的事件名稱,所以請勿在事件名稱中使用 Start 或 End。

StartUserTask(TelemetrySession, String, TelemetrySeverity, IDictionary<String,Object>, TelemetryEventCorrelation[])

在使用者工作開始時張貼 UserTaskEvent 具有指定屬性的 ,然後傳回 TelemetryScope<T> 物件,以開始追蹤使用者工作。 當使用者工作完成時,呼叫 方法來 End(TelemetryResult, String) 張貼另一個 UserTaskEvent 結束點。 因為開始和結束事件都使用相同的事件名稱,所以請勿在事件名稱中使用 Start 或 End。

適用於