Partilhar via


Classe Job

The Job class represents a Microsoft SQL Server Agent job.

Namespace:  Microsoft.SqlServer.Management.Smo.Agent
Assembly:  Microsoft.SqlServer.Smo (em Microsoft.SqlServer.Smo.dll)

Sintaxe

'Declaração
Public NotInheritable Class Job _
    Inherits AgentObjectBase _
    Implements IAlterable, ICreatable, IDroppable, IRenamable,  _
    IScriptable
'Uso
Dim instance As Job
public sealed class Job : AgentObjectBase, IAlterable, 
    ICreatable, IDroppable, IRenamable, IScriptable
public ref class Job sealed : public AgentObjectBase, 
    IAlterable, ICreatable, IDroppable, IRenamable, IScriptable
[<SealedAttribute>]
type Job =  
    class
        inherit AgentObjectBase
        interface IAlterable
        interface ICreatable
        interface IDroppable
        interface IRenamable
        interface IScriptable
    end
public final class Job extends AgentObjectBase implements IAlterable, ICreatable, IDroppable, IRenamable, IScriptable

O tipo Job expõe os membros a seguir.

Construtores

  Nome Descrição
Método público Job() () () () Initializes a new instance of the Job class.
Método público Job(JobServer, String) Initializes a new instance of the Job class on the specified instance of Microsoft SQL Server Agent and with the specified name.
Método público Job(JobServer, String, Int32) Initializes a new instance of the Job class on the specified instance of SQL Server Agent and with the specified name and category

Início

Propriedades

  Nome Descrição
Propriedade pública Category Gets or sets the category to which the job belongs.
Propriedade pública CategoryID Gets the ID value that uniquely identifies the job category.
Propriedade pública CategoryType Gets or sets the type of category, with respect to local or multiserver jobs.
Propriedade pública CurrentRunRetryAttempt Gets the number of times Microsoft SQL Server Agent has attempted to run the job unsuccessfully.
Propriedade pública CurrentRunStatus Gets the current execution status of the job.
Propriedade pública CurrentRunStep Gets information about the job step that is currently running.
Propriedade pública DateCreated Gets the date and time when the job was created.
Propriedade pública DateLastModified Gets the date and time when the job was last modified.
Propriedade pública DeleteLevel Gets or sets the completion action that determines whether to delete the job definition when the job finishes execution.
Propriedade pública Description Gets or sets the textual description of the job.
Propriedade pública EmailLevel Gets or sets the completion action that determines whether to send an e-mail notification to an operator when the job finishes execution.
Propriedade pública EventLogLevel Gets or sets the completion action that determines whether to generate an operating system event log entry when the job finishes execution.
Propriedade protegida ExecuteForScalar Obtém ou define o valor da propriedade Boolean que especifica se o objeto esta definido para a opção execute for scalar. (Herdado de SqlSmoObject.)
Propriedade pública HasSchedule Gets the Boolean property value that specifies whether the job has at least one schedule.
Propriedade pública HasServer Gets the Boolean property value that specifies whether the job has a target server assigned for multiple-server operations.
Propriedade pública HasStep Gets the Boolean property value that specifies whether the job has at least one job step.
Propriedade pública IsEnabled Gets or sets the Boolean property value that specifies whether the job is enabled.
Propriedade protegida IsTouched Obtém o valor da propriedade Boolean que especifica se as propriedades do objeto foram atualizadas, mas ainda não foram persistidas no servidor. (Herdado de SqlSmoObject.)
Propriedade pública JobID Gets the job ID value.
Propriedade pública JobSchedules Gets a collection of JobSchedule objects that represent the schedules assigned to the job.
Propriedade pública JobSteps Gets a collection of JobStep objects that represent the job steps defined for the job.
Propriedade pública JobType Gets the job type, which specifies whether the job is local or multiserver.
Propriedade pública LastRunDate Gets the date and time when the job was last run.
Propriedade pública LastRunOutcome Gets the result of the job from the last time it completed execution.
Propriedade pública Name Gets or sets the name of the Job. (Substitui NamedSmoObject. . :: . .Name.)
Propriedade pública NetSendLevel Gets or sets the completion action that determines whether to net-send a notification to an operator when the job finishes execution.
Propriedade pública NextRunDate Gets the date and time when the job is next scheduled to run.
Propriedade pública NextRunScheduleID Gets the ID value of the schedule that is responsible for the next execution of the job.
Propriedade protegida ObjectInSpace Obtém o valor da propriedade Boolean que especifica se o objeto existe em isolamento ou se está direta ou indiretamente conectado com a instância do SQL Server. (Herdado de SqlSmoObject.)
Propriedade pública OperatorToEmail Gets or sets the operator that receives notification by e-mail when the job finishes execution.
Propriedade pública OperatorToNetSend Gets or sets the operator that receives a net-send notification when the job finishes execution.
Propriedade pública OperatorToPage Gets or sets the operator that receives a pager notification when the job finishes execution.
Propriedade pública OriginatingServer Gets the name of the server that is acting as the master server in a multiserver job.
Propriedade pública OwnerLoginName Gets or sets the owner of the job.
Propriedade pública PageLevel Gets or sets the completion action that determines whether to send a pager notification to an operator when the job finishes execution.
Propriedade pública Parent Gets or sets the JobServer object that is the parent of the Job object.
Propriedade pública Properties Obtém uma coleção de objetos Property que representam as propriedades do objeto. (Herdado de SqlSmoObject.)
Propriedade protegida ScalarResult Obtém o resultado escalar do objeto referenciado. (Herdado de SqlSmoObject.)
Propriedade pública StartStepID Gets or sets the ID value of the first job step in the sequence to be executed.
Propriedade pública State Gets the state of the referenced object. (Herdado de SmoObjectBase.)
Propriedade pública Urn Obtém o valor do endereço do URN (Uniform Resource Name) que identifica exclusivamente o objeto. (Herdado de SqlSmoObject.)
Propriedade pública UserData Gets or sets user-defined data associated with the referenced object. (Herdado de SmoObjectBase.)
Propriedade pública VersionNumber Gets a system-maintained value that is incremented every time the job is modified.

Início

Métodos

  Nome Descrição
Método protegido AddDatabaseContext(StringCollection) Adiciona o contexto do banco de dados à coleção de consultas identificadas pelo parâmetro queries. (Herdado de SqlSmoObject.)
Método protegido AddDatabaseContext(StringCollection, ScriptingOptions) Adiciona o contexto de banco de dados à coleção de consultas identificadas pelo parâmetro queries e usando as opções de script especificadas. (Herdado de SqlSmoObject.)
Método público AddSharedSchedule Adds a shared schedule to the Microsoft SQL Server Agent job.
Método público Alter Updates any Job object property changes on an instance of Microsoft SQL Server. 
Método protegido AlterImpl Ativa o evento alterado do objeto. (Herdado de SqlSmoObject.)
Método protegido AlterImplFinish Método chamado quando o evento alterado do objeto é concluído. (Herdado de SqlSmoObject.)
Método protegido AlterImplInit Método chamado quando o evento de alteração do objeto é inicializado. (Herdado de SqlSmoObject.)
Método protegido AlterImplWorker Chama os métodos Alter. (Herdado de SqlSmoObject.)
Método público ApplyToTargetServer Adds a server to the list of target servers maintained for the referenced Microsoft SQL Server Agent job.
Método público ApplyToTargetServerGroup Adds one or more servers to the list of target servers maintained for the referenced Microsoft SQL Server Agent job.
Método protegido BindDefaultImpl Associa os itens padrão identificados pelos parâmetros. (Herdado de SqlSmoObject.)
Método protegido BindRuleImpl Associa o esquema de regra à regra e às colunas identificadas pelos parâmetros. (Herdado de SqlSmoObject.)
Método protegido CheckCollation Verifica a ordem das opções de script pelo método de agrupamento identificado pelo parâmetro collationName. (Herdado de SqlSmoObject.)
Método protegido CheckObjectState() () () () Valida o estado do objeto referenciado. (Herdado de SqlSmoObject.)
Método protegido CheckObjectState(Boolean) Valida o estado do objeto referenciado com a opção de especificar que uma exceção será gerada se o objeto ainda não tiver sido criado. (Herdado de SqlSmoObject.)
Método protegido CheckObjectStateImpl Verifica o estado de um SqlSmoObject. (Herdado de SqlSmoObject.)
Método protegido CheckVersion100 Verifica se a versão do SQL Server é SQL Server 2008. (Herdado de SqlSmoObject.)
Método protegido CheckVersion80 Verifica a validade do objeto no SQL Server 2000. (Herdado de SqlSmoObject.)
Método protegido CheckVersion80SP3 Verifica a validade do objeto no SQL Server 2000 SP3. (Herdado de SqlSmoObject.)
Método protegido CheckVersion90 Verifica a validade do objeto no SQL Server 2005. (Herdado de SqlSmoObject.)
Método protegido CheckVersionBelow90 Verifica se a versão do SQL Server é anterior ao SQL Server 2005. (Herdado de SqlSmoObject.)
Método protegido CleanObject Define o objeto como estado inalterado. (Herdado de SqlSmoObject.)
Método público Create Creates a job on the instance of Microsoft SQL Server as defined by the Job object.
Método protegido CreateImpl Cria um objeto com as opções do script. (Herdado de SqlSmoObject.)
Método protegido CreateImplFinish Método chamado quando o evento de criação é concluído. (Herdado de SqlSmoObject.)
Método protegido CreateImplInit Método chamado quando o evento de criação é inicializado. (Herdado de SqlSmoObject.)
Método público DeleteJobStepLogs(DateTime) Deletes job step log files that are older than the specified date.
Método público DeleteJobStepLogs(Int32) Deletes job step log files that are larger that the specified log ID number.
Método público Discover Descobre uma lista do tipo Object. (Herdado de SqlSmoObject.)
Método público Drop() () () () Removes an existing job.
Método público Drop(Boolean) Removes an existing job.
Método protegido DropImpl Remove um SqlSmoObject. (Herdado de SqlSmoObject.)
Método protegido DropImplWorker Chama os métodos de remoção. (Herdado de SqlSmoObject.)
Método público EnumAlerts Enumerates a list of Agent alerts that cause automated execution of the referenced job.
Método público EnumHistory() () () () Enumerates a list of execution history associated with the referenced job.
Método público EnumHistory(JobHistoryFilter) Enumerates a list of execution history associated with the referenced job.
Método público EnumJobStepLogs() () () () Enumerates a list of job step log files for the referenced job.
Método público EnumJobStepLogs(Int32) Enumerates a list of job step log files for the job step with the specified ID value.
Método público EnumJobStepLogs(String) Enumerates a list of job step log files for the job step with the specified name.
Método público EnumJobStepsByID Returns an array of JobStep objects that belong to the referenced job and that are ordered by ID value.
Método protegido EnumScriptImpl Enumera scripts especificados pelo parâmetro so. (Herdado de SqlSmoObject.)
Método protegido EnumScriptImplWorker Chama os métodos que enumeram scripts especificados pelo parâmetro so. (Herdado de SqlSmoObject.)
Método protegido EnumScriptImplWorkerSOChanged Retorna uma cadeia de caracteres IEnumerable que descreve as opções de script de um objeto. (Herdado de SqlSmoObject.)
Método público EnumTargetServers Enumerates a list of execution target servers that have been assigned to the referenced job.
Método público Equals (Herdado de Object.)
Método protegido ExecuteNonQuery (Herdado de SqlSmoObject.)
Método protegido Finalize (Herdado de Object.)
Método protegido FormatSqlVariant Formata um objeto como tipo SqlVariant. (Herdado de SqlSmoObject.)
Método protegido GenerateDataSpaceFileStreamScript Gera um script para criar arquivo de dados. (Herdado de SqlSmoObject.)
Método protegido GenerateDataSpaceScript Gera um script para alocar espaço no arquivo de dados. (Herdado de SqlSmoObject.)
Método protegido GetBindDefaultScript Obtém o script que associa padrões especificados pelos parâmetros defSchema e defName. (Herdado de SqlSmoObject.)
Método protegido GetBindRuleScript Obtém o script que especifica as regras de associação. (Herdado de SqlSmoObject.)
Método protegido GetBoolParameter(StringBuilder, ScriptingOptions, String, String, Int32%) Atribui um parâmetro booliano do SqlSmoObject. (Herdado de SqlSmoObject.)
Método protegido GetBoolParameter(StringBuilder, ScriptingOptions, String, String, Int32%, Boolean) Atribui uma propriedade booliana do SqlSmoObject. (Herdado de SqlSmoObject.)
Método protegido GetDateTimeParameter Atribui a propriedade datetime do SqlSmoObject. (Herdado de SqlSmoObject.)
Método protegido GetDateTimeParameterAsInt Atribuirá a propriedade datetime do SqlSmoObject como um valor inteiro se a propriedade datetime não for nula. (Herdado de SqlSmoObject.)
Método protegido GetDBName Não referencie esse membro diretamente no código. Ele dá suporte à infraestrutura do SQL Server. Gets the database name that is associated with the object. (Herdado de AgentObjectBase.)
Método protegido GetEnumParameter Atribui uma propriedade de enumeração do SqlSmoObject. (Herdado de SqlSmoObject.)
Método protegido GetFragOptionString Obtém um objeto FragmentationOption como um valor de cadeia de caracteres. (Herdado de SqlSmoObject.)
Método protegido GetGuidParameter Atribui uma propriedade Guid do SqlSmoObject. (Herdado de SqlSmoObject.)
Método público GetHashCode (Herdado de Object.)
Método protegido GetParameter(StringBuilder, ScriptingOptions, String, String, Int32%) Atribui um parâmetro do SqlSmoObject. (Herdado de SqlSmoObject.)
Método protegido GetParameter(StringBuilder, ScriptingOptions, String, String, Int32%, Boolean) Atribui um parâmetro do SqlSmoObject. (Herdado de SqlSmoObject.)
Método protegido GetPropValue Obtém um valor da propriedade do objeto SqlSmoObject. (Herdado de SqlSmoObject.)
Método protegido GetPropValueOptional Obtém um valor da propriedade do objeto SqlSmoObject. (Herdado de SqlSmoObject.)
Método protegido GetPropValueOptionalAllowNull Obtém um valor da propriedade do objeto SqlSmoObject. (Herdado de SqlSmoObject.)
Método protegido GetRealValue Obtém um valor da propriedade do objeto SqlSmoObject. (Herdado de SqlSmoObject.)
Método protegido GetScriptingOptionsForCreate Obtém ScriptingOptions para o objeto SqlSmoObject. (Herdado de SqlSmoObject.)
Método protegido GetServerName Obtém o nome da instância do SQL Server à qual o objeto está associado. (Herdado de SqlSmoObject.)
Método protegido GetServerObject Obtém o servidor do objeto SqlSmoObject. (Herdado de SqlSmoObject.)
Método protegido GetSqlServerVersionName Obtém o nome da versão da instância do SQL Server à qual o objeto está associado. (Herdado de SqlSmoObject.)
Método protegido GetStringParameter(StringBuilder, ScriptingOptions, String, String, Int32%) Atribui um parâmetro de cadeia de caracteres do objeto SqlSmoObject. (Herdado de SqlSmoObject.)
Método protegido GetStringParameter(StringBuilder, ScriptingOptions, String, String, Int32%, Boolean) Atribui um parâmetro de cadeia de caracteres do objeto SqlSmoObject. (Herdado de SqlSmoObject.)
Método protegido GetTimeSpanParameterAsInt Atribui um parâmetro de período de tempo do objeto SqlSmoObject. (Herdado de SqlSmoObject.)
Método público GetType (Herdado de Object.)
Método protegido GetUrnRecursive(StringBuilder) Atribui um objeto Urn do objeto SqlSmoObject. (Herdado de SqlSmoObject.)
Método protegido GetUrnRecursive(StringBuilder, UrnIdOption) Atribui um objeto Urn do objeto SqlSmoObject. (Herdado de SqlSmoObject.)
Método protegido ImplInitialize Inicializa os campos do objeto SqlSmoObject. (Herdado de SqlSmoObject.)
Método público Initialize() () () () Inicializa o objeto e força o carregamento das propriedades. (Herdado de SqlSmoObject.)
Método público Initialize(Boolean) Inicializa o objeto e força o carregamento das propriedades. (Herdado de SqlSmoObject.)
Método público Invoke Runs the job.
Método protegido IsObjectDirty Verifica se as propriedades de objeto foram modificadas e se as alterações ainda não foram persistidas na instância do SQL Server. (Herdado de SqlSmoObject.)
Método protegido IsObjectInitialized Verifica se o objeto foi inicializado. (Herdado de SqlSmoObject.)
Método protegido IsObjectInSpace Verifica se o objeto está isolado ou conectado com a instância do SQL Server. (Herdado de SqlSmoObject.)
Método protegido IsVersion80SP3 Determina se a versão do SQL Server é SQL Server 2000 com SP3. (Herdado de SqlSmoObject.)
Método protegido IsVersion90AndAbove Determina se a versão do SQL Server é SQL Server 2005 ou posterior. (Herdado de SqlSmoObject.)
Método protegido MarkDropped Define o SqlSmoState como removido. (Herdado de SqlSmoObject.)
Método protegido MarkForDropImpl Define o SqlSmoState como removido. (Herdado de SqlSmoObject.)
Método protegido MemberwiseClone (Herdado de Object.)
Método protegido PostAlter Método ativado depois da alteração do SqlSmoObject. (Herdado de SqlSmoObject.)
Método protegido PostCreate Método ativado depois da criação do SqlSmoObject. (Herdado de SqlSmoObject.)
Método protegido PostDrop Método ativado depois da remoção do SqlSmoObject. (Herdado de SqlSmoObject.)
Método público PurgeHistory Removes system records maintaining execution history for the referenced job.
Método público Refresh Atualiza o objeto e recupera as propriedades na próxima vez que o objeto é acessado. (Herdado de SqlSmoObject.)
Método público RemoveAllJobSchedules() () () () Removes all shared and unshared schedules from the job.
Método público RemoveAllJobSchedules(Boolean) Removes all unused schedules from the job.
Método público RemoveAllJobSteps Removes all the job steps associated with the job.
Método público RemoveFromTargetServer Removes an execution target server from the list of target servers maintained for a job.
Método público RemoveFromTargetServerGroup Removes a group of execution target servers from the list of target servers maintained for a job.
Método público RemoveSharedSchedule(Int32) Removes the specified shared schedule from the job.
Método público RemoveSharedSchedule(Int32, Boolean) Removes the specified shared schedule from the job and keeps unused schedules.
Método público Rename Renames the job.
Método protegido RenameImpl Identificado apenas para fins informativos. Sem suporte. A compatibilidade futura não está garantida. (Herdado de NamedSmoObject.)
Método protegido RenameImplWorker Identificado apenas para fins informativos. Sem suporte. A compatibilidade futura não está garantida. (Herdado de NamedSmoObject.)
Método público Script() () () () Generates a Transact-SQL script that can be used to re-create the Microsoft SQL Server Agent job.
Método público Script(ScriptingOptions) Generates a Transact-SQL script that can be used to re-create the Microsoft SQL Server Agent job as specified by the scripting options.
Método protegido ScriptAlter Altera o SqlSmoObject de acordo com os parâmetros. (Herdado de SqlSmoObject.)
Método protegido ScriptChangeOwner This method supports the SMO infrastructure and is not intended to be used directly from your code. (Herdado de NamedSmoObject.)
Método protegido ScriptCreate Altera o SqlSmoObject de acordo com os parâmetros. (Herdado de SqlSmoObject.)
Método protegido ScriptDdl Gera a InvalidSmoOperationException. (Herdado de SqlSmoObject.)
Método protegido ScriptDrop Gera a InvalidSmoOperationException. (Herdado de SqlSmoObject.)
Método protegido ScriptImpl() () () () Obtém uma coleção de scripts do SqlSmoObject. (Herdado de SqlSmoObject.)
Método protegido ScriptImpl(ScriptingOptions) Obtém uma coleção de scripts do SqlSmoObject. (Herdado de SqlSmoObject.)
Método protegido ScriptImplWorker Obtém uma coleção de scripts do SqlSmoObject. (Herdado de SqlSmoObject.)
Método protegido ScriptOwner Alters the script owner authorization. (Herdado de NamedSmoObject.)
Método protegido ScriptRename This method supports the SMO infrastructure and is not intended to be used directly from your code. (Herdado de NamedSmoObject.)
Método protegido SetParentImpl Define o pai do SqlSmoObject como o parâmetro newParent. (Herdado de SqlSmoObject.)
Método protegido SetSchemaOwned Sets the schema owned value. (Herdado de NamedSmoObject.)
Método público Start() () () () Runs the referenced job.
Método público Start(String) Runs the referenced job starting at the specified job step.
Método público Stop Stops executing the referenced job.
Método público ToString Retorna um String que representa o objeto referenciado. (Herdado de SqlSmoObject.)
Método protegido TouchImpl Não implementado. (Herdado de SqlSmoObject.)
Método protegido UnbindDefaultImpl Desassocia as colunas padrão do SqlSmoObject. (Herdado de SqlSmoObject.)
Método protegido UnbindRuleImpl Desassocia as regras do SqlSmoObject. (Herdado de SqlSmoObject.)
Método público Validate Validates the state of an object. (Herdado de SmoObjectBase.)

Início

Eventos

  Nome Descrição
Evento público PropertyChanged Representa o evento que ocorre quando uma propriedade é alterada. (Herdado de SqlSmoObject.)
Evento público PropertyMetadataChanged Representa o evento que ocorre quando os metadados da propriedade são alterados. (Herdado de SqlSmoObject.)

Início

Campos

  Nome Descrição
Campo protegido m_ExtendedProperties Representa uma propriedade definida para estender as propriedades fornecidas por um SqlSmoObject. (Herdado de SqlSmoObject.)
Campo protegido singletonParent Representa o pai do singleton. (Herdado de SqlSmoObject.)

Início

Implementações de interfaces explícitas

  Nome Descrição
Implementações de interfaces explícitasMétodo privado IAlienObject. . :: . .Discover Descobre quaisquer dependências. Não referencie esse membro diretamente no código. Ele dá suporte à infraestrutura do SQL Server. (Herdado de SqlSmoObject.)
Implementações de interfaces explícitasMétodo privado IAlienObject. . :: . .GetDomainRoot Retorna a raiz do domínio. (Herdado de SqlSmoObject.)
Implementações de interfaces explícitasMétodo privado IAlienObject. . :: . .GetParent Obtém o pai do objeto. Não referencie esse membro diretamente no código. Ele dá suporte à infraestrutura do SQL Server. (Herdado de SqlSmoObject.)
Implementações de interfaces explícitasMétodo privado IAlienObject. . :: . .GetPropertyType Obtém o tipo da propriedade especificada. (Herdado de SqlSmoObject.)
Implementações de interfaces explícitasMétodo privado IAlienObject. . :: . .GetPropertyValue Obtém o valor da propriedade especificada. (Herdado de SqlSmoObject.)
Implementações de interfaces explícitasMétodo privado IAlienObject. . :: . .GetUrn Obtém o Unified Resource Name do objeto. Não referencie esse membro diretamente no código. Ele dá suporte à infraestrutura do SQL Server. (Herdado de SqlSmoObject.)
Implementações de interfaces explícitasMétodo privado IAlienObject. . :: . .Resolve Obtém a instância que contém as informações sobre o objeto a partir do Unified Resource Name do objeto. (Herdado de SqlSmoObject.)
Implementações de interfaces explícitasMétodo privado IAlienObject. . :: . .SetObjectState Define o estado do objeto como o valor SfcObjectState especificado. (Herdado de SqlSmoObject.)
Implementações de interfaces explícitasMétodo privado IAlienObject. . :: . .SetPropertyValue Define o valor da propriedade. (Herdado de SqlSmoObject.)
Implementações de interfaces explícitasMétodo privado ISfcPropertyProvider. . :: . .GetPropertySet Obtém a referência da interface para o conjunto de propriedades deste objeto. Não referencie esse membro diretamente no código. Ele dá suporte à infraestrutura do SQL Server. (Herdado de SqlSmoObject.)

Início

Comentários

To get or set Job object properties, users must be a member of the SQLAgentUserRole database role on the MSDB database, or be the owner of the job, or be a member of the sysadmin fixed server role.

To create a job, users must be a member of the SQLAgentUserRole, SQLAgentReaderRole, and SQLAgentOperatorRole database roles on the MSDB database, or be a member of the sysadmin fixed server role.

To drop a job, users must be a member of the SQLAgentUserRole database role on the MSDB database, or be the owner of the job, or be a member of the sysadmin fixed server role.

Thread Safety

Qualquer membro público estático (Compartilhado no Microsoft Visual Basic) desse tipo é seguro para operações multi-threaded. Não há garantia de que qualquer membro de instância seja seguro para threads.

Segurança de thread

Qualquer membro público static (Shared no Visual Basic) desse tipo é seguro para threads. Não há garantia de que qualquer membro de instância seja seguro para threads.