Como Adquirir um Bloqueio num Objeto com Capacidade Para SEDO
Adquirir um bloqueio explícito num objeto ativado pelo SEDO
Criar um exemplo da
SMS_ObjectLock
classe WMIObtenha o objeto de parâmetros do método para o
RequestLock
método.Atribua o caminho do objeto do objeto que deseja bloquear para a
ObjectRelPath
propriedade.Desa estação
RequestTransfer
atrue
.Criar uma
InvokeMethodOptions
instância de objeto. Na propriedade Contexto, adicione um par de nome/valor. O nome deve ser "ObjectLockContext" e o valor deve ser um valor único, como um Guid. Adicione outro par de nome/valor com "MachineName" e o nome do computador que solicita o bloqueio.Ligue para InvocarMethod sobre o
SMS_ObjectLock
caso.Invocar oMethod vai devolver uma
SMS_ObjectLockRequest
instância. Consulte asRequestState
propriedades e propriedades para obter maisLockState
informações sobre o sucesso ou falha do pedido.
Exemplo
O exemplo a seguir solicita uma fechadura explícita numa SMS_ConfigurationItem
instância de objeto.
class Program
{
static void Main(string[] args)
{
ManagementScope scope = new ManagementScope(@"\\siteservername\root\sms\site_ABC");
RequestLock(scope);
}
public static void RequestLock(ManagementScope scope)
{
ManagementPath path = new ManagementPath("SMS_ObjectLock");
ManagementClass objectLock = new ManagementClass(scope, path, null);
ManagementBaseObject inParams = objectLock.GetMethodParameters("RequestLock");
inParams["ObjectRelPath"] = "SMS_ConfigurationItem.CI_ID=30";
inParams["RequestTransfer"] = true;
InvokeMethodOptions options = new InvokeMethodOptions();
options.Context.Add("ObjectLockContext", Guid.NewGuid().ToString());
options.Context.Add("MachineName", "RequestingComputer");
ManagementBaseObject result = objectLock.InvokeMethod("RequestLock", inParams, options);
}
}
O SMS_ObjectLockRequest objeto contém as seguintes propriedades:
Propriedade | Descrição |
---|---|
RequestID | Identificador único do pedido. |
ObjectRelPath | O caminho do objeto para o qual é solicitada a fechadura. |
Estado de Pedido | Indica o sucesso ou insucesso do pedido. |
Estado do Bloqueio | Indica o estado atual do bloqueio solicitado. |
DesignadoUser | Indica o utilizador atualmente designado do bloqueio solicitado. |
DesignadoObjectLockContext | Indica o ObjectLockContext a que o bloqueio está atualmente atribuído. |
Atribuição de Aachina | Indica o computador atualmente designado do bloqueio solicitado. |
Código de Site Atribuído | Indica o local atual do bloqueio solicitado. |
DesignadoTimeuTC | Indica a hora em que o bloqueio solicitado foi atribuído. |
Estado de Pedido
A tabela abaixo apresenta os valores do estado de pedido possíveis. Os estados de pedido concedidos, GrantedAfterTimeout e GrantedLockWasOrphaned indicam um pedido bem sucedido e o utilizador pode então fazer e guardar modificações no objeto. Todos os outros pedidos indicam erro.
RequestStateID | Nome do Estado do Pedido |
---|---|
0 | Desconhecido |
2 | Pedido |
3 | SolicitadoCanceled |
4 | RespostaSRecebidas |
10 | Concedido |
11 | ConcedidoAfterTimeout |
12 | ConcedidoLockWasOrphaned |
20 | NegadoLockAlreadyAssigned |
21 | NegaInvalidObjectVersion |
22 | NegadoLockNotFound |
23 | NegadoLockNotLocal |
24 | RecusadoRequestTimedOut |
50 | Erro |
52 | ErrorRequestNotFound |
53 | ErrorRequestTimedOut |
Estado do Bloqueio
A tabela abaixo apresenta os possíveis valores do estado de bloqueio.
LockStateID | LockStateName |
---|---|
0 | Não atribuído |
1 | Atribuído |
2 | Pedido |
3 | Inscrição pendente |
4 | TimedOut |
5 | NotFound |
A Compilar o Código
O exemplo C# requer:
Espaços de nomes
Sistema
Sistema.Gestão
Assemblagem
Programação Robusta
Para obter mais informações sobre o tratamento de erros, consulte Sobre erros do Gestor de Configuração.