TelemetrySession 类

定义

表示一个可以发布遥测事件和会话属性的遥测会话。 API 尽最大努力将遥测数据传送到服务器。 请求将排队并分批发送。 如果在进程退出之前无法发送事件,则这些事件将保存在本地。 当下一个应用程序实例调用遥测 API 时,将恢复发送。 如果进程无响应或严重崩溃或 30 天内没有 Internet 连接,遥测可能会丢失。 所有方法都是线程安全的,并立即返回。

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 的应用程序 ID

BucketFiltersToAddDumpsToFaults

获取或设置一个值,该值指示应为故障事件添加哪些存储桶进程转储。

BucketFiltersToEnableWatsonForFaults

获取或设置一个值,该值指示应为故障事件启用哪些存储桶 Watson 报告。

CalculatedSamplings

从清单文件获取/设置计算的采样

CancellationToken

获取遥测会话的 CancellationToken

CanCollectPrivateInformation

获取一个值,该值指示当前会话是否可以基于用户信息管理器的答案收集 PII 信息

GlobalStorageUri

从 VS Code 获取全局存储 URI

HostName

获取或设置遥测主机名,它会影响清单文件位置

IsDisposed

获取一个值,该值指示是否删除会话 - 以检测冗余调用

(继承自 TelemetryDisposableObject)
IsOptedIn

获取或设置一个值,该值指示用户是否被选择加入。

IsUserMicrosoftInternal

获取一个值,该值指示当前会话是否属于内部用户,因此可以根据用户信息管理器的答案收集信息

MacAddressHash

获取 MAC 地址哈希。 如果在本地存储中找不到哈希,则将返回 0 哈希,并将调用哈希进程

MachineId

获取计算机 ID (SQM 计算机 ID)

SessionId

获取会话 ID。

TimeSinceSessionStart

获取 TimeSinceSessionStart,以防客户希望根据遥测的相同算法使用它来计算自定义延迟。

UserId

获取用户 ID (SQM 用户 ID)

方法

AddCommonPropertyRange(IDictionary<String,Object>)

添加可能为会话的所有事件通用但不应具有 Default.Context 前缀的属性。 在会话之间不会保留属性。 若要添加单个属性,请参阅 TryAddCommonProperty(String, Object)

AddSessionChannel(ISessionChannel)

将新会话通道添加到活动通道列表。

CreateContext(String)

使用特定名称Create上下文。

Dispose()

添加此代码以正确实现可释放模式。

(继承自 TelemetryDisposableObject)
DisposeManagedResources()

释放模式的受保护实现。

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)

尝试添加单个属性键和值,该属性键和值对于会话的所有事件可能通用,但不应具有上下文前缀。 在会话之间不会保留属性。 若要添加多个属性,请参阅 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[])

发布资产事件。 资产是用户任务或操作的目标,例如解决方案、项目、文件、扩展、许可证Designer。

PostFault(TelemetrySession, String, String)

发布错误事件。 事件将始终发送到 AppInsights,但如果它通过采样,它也会发布到 Wason。 当与 UserTaskEvent 或 相关时 OperationEvent ,它变得更加有用,这可能会导致故障发生。

PostFault(TelemetrySession, String, String, FaultSeverity)

发布错误事件。 事件将始终发送到 AppInsights,但如果它通过采样,它也会发布到 Wason。 当与 UserTaskEvent 或 相关时 OperationEvent ,它变得更加有用,这可能会导致故障发生。

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

使用托管 Exception 对象发布错误事件。 存储桶参数是从异常对象创建的。 当与 UserTaskEvent 或 相关时 OperationEvent ,它变得更加有用,这可能会导致故障发生。

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)

使用托管 Exception 对象发布错误事件。 存储桶参数是从异常对象创建的。 当与 UserTaskEvent 或 相关时 OperationEvent ,它变得更加有用,这可能会导致故障发生。

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[])

发布操作事件。 操作在应用程序中执行一些工作,并附带结果 (例如成功、失败) 。 如果操作由用户直接调用,请使用 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 终结点。 由于开始和结束事件使用相同的事件名称,因此请不要在事件名称中使用“开始”或“结束”。

StartOperation(TelemetrySession, String, TelemetryScopeSettings)

通过在操作工作开始时发布 OperationEvent 具有指定属性的 ,开始跟踪操作,并返回对象 TelemetryScope<T> 。 用户任务完成后,调用 方法 End(TelemetryResult, String) 发布另一个 OperationEvent 终结点。 由于开始和结束事件使用相同的事件名称,因此请不要在事件名称中使用“开始”或“结束”。

StartOperation(TelemetrySession, String, TelemetrySeverity)

通过在操作工作开始时发布 来 OperationEvent 启动跟踪操作,并返回 对象 TelemetryScope<T> 。 用户任务完成后,调用 方法 End(TelemetryResult, String) 发布另一个 OperationEvent 终结点。 由于开始和结束事件使用相同的事件名称,因此请不要在事件名称中使用“开始”或“结束”。

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

通过在操作工作开始时发布 OperationEvent 具有指定属性的 ,开始跟踪操作,并返回对象 TelemetryScope<T> 。 用户任务完成后,调用 方法 End(TelemetryResult, String) 发布另一个 OperationEvent 终结点。 由于开始和结束事件使用相同的事件名称,因此请不要在事件名称中使用“开始”或“结束”。

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

通过在操作工作开始时发布 OperationEvent 具有指定属性的 ,开始跟踪操作,并返回对象 TelemetryScope<T> 。 用户任务完成后,调用 方法 End(TelemetryResult, String) 发布另一个 OperationEvent 终结点。 由于开始和结束事件使用相同的事件名称,因此请不要在事件名称中使用“开始”或“结束”。

StartUserTask(TelemetrySession, String)

通过在用户任务工作开始时发布 来 UserTaskEvent 开始跟踪用户任务,然后返回对象 TelemetryScope<T> 。 用户任务完成后,调用 方法 End(TelemetryResult, String) 发布另一个 UserTaskEvent 终结点。 由于开始和结束事件使用相同的事件名称,因此请不要在事件名称中使用“开始”或“结束”。

StartUserTask(TelemetrySession, String, TelemetryScopeSettings)

通过在用户任务工作开始时发布 UserTaskEvent 具有指定属性的 ,开始跟踪用户任务,然后返回一个 TelemetryScope<T> 对象。 用户任务完成后,调用 方法 End(TelemetryResult, String) 发布另一个 UserTaskEvent 终结点。 由于开始和结束事件使用相同的事件名称,因此请不要在事件名称中使用“开始”或“结束”。

StartUserTask(TelemetrySession, String, TelemetrySeverity)

通过在用户任务工作开始时发布 来 UserTaskEvent 开始跟踪用户任务,然后返回对象 TelemetryScope<T> 。 用户任务完成后,调用 方法 End(TelemetryResult, String) 发布另一个 UserTaskEvent 终结点。 由于开始和结束事件使用相同的事件名称,因此请不要在事件名称中使用“开始”或“结束”。

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

通过在用户任务工作开始时发布 UserTaskEvent 具有指定属性的 ,开始跟踪用户任务,然后返回一个 TelemetryScope<T> 对象。 用户任务完成后,调用 方法 End(TelemetryResult, String) 发布另一个 UserTaskEvent 终结点。 由于开始和结束事件使用相同的事件名称,因此请不要在事件名称中使用“开始”或“结束”。

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

通过在用户任务工作开始时发布 UserTaskEvent 具有指定属性的 ,开始跟踪用户任务,然后返回一个 TelemetryScope<T> 对象。 用户任务完成后,调用 方法 End(TelemetryResult, String) 发布另一个 UserTaskEvent 终结点。 由于开始和结束事件使用相同的事件名称,因此请不要在事件名称中使用“开始”或“结束”。

适用于