HyperV WMI v2 Как ждать завершения метода - PullRequest
1 голос
/ 13 февраля 2020

Я использую «новую» библиотеку System.Management.Infrastructure и хочу выполнить несколько методов. Результат метода ниже 4096, что означает, что Работа началась. Как мне дождаться или проверить, изменилось ли оно на 0? У меня та же проблема с применением, удалением и созданием снимков.

Есть ли общий способ проверить «статус»?

public async Task RequestStateChange(PublicServerInfo publicServer, string action)
{
    CimSession session = GetCimSession(publicServer.HostName);
    CimInstance vm = session.QueryInstances(hvNamespace, "WQL", "SELECT * FROM Msvm_ComputerSystem WHERE Name='" + publicServer.MachineID + "'").FirstOrDefault();
    CimMethodParametersCollection parameters = new CimMethodParametersCollection();
    if (action.ToLower() == "start")
    {
        parameters.Add(CimMethodParameter.Create("RequestedState", (UInt16)2, CimFlags.In));
    }
    else if (action.ToLower() == "shutdown")
    {
        parameters.Add(CimMethodParameter.Create("RequestedState", (UInt16)4, CimFlags.In));
    }

    CimMethodResult result = session.InvokeMethod(hvNamespace, vm, "RequestStateChange", parameters);
}
...