Como definir um tempo limite nas consultas WMI?

Eu tenho um aplicativo .NET que executa consultas WMI em todos os computadores do domínio para encontrar o usuário conectado; ele envia um ping para cada computador para descobrir se está online ou não e, em seguida, executa a consulta rea

Fragmento de código

try
{
    string loggedonuser = null;

    string computername = "ComputerToQuery";

    ConnectionOptions co = new ConnectionOptions();

    co.Username = "DOMAIN\MyUser";
    co.Password = "MyPassword";

    co.Impersonation = ImpersonationLevel.Impersonate;
    co.Authentication = AuthenticationLevel.Default;

    ManagementPath mp = new ManagementPath(@"\\" + computername + @"\root\cimv2");

    ManagementScope ms = new ManagementScope(mp,co);

    ms.Connect();

    ObjectQuery oq = new ObjectQuery("SELECT username FROM Win32_ComputerSystem");

    ManagementObjectSearcher mos = new ManagementObjectSearcher(ms,oq);

    foreach(ManagementObject mo in mos.Get())
        loggedonuser = (String) mo["username"];
}
catch(Exception e)
{
    // Handle WMI exception
}

O problema: às vezes a consulta WMI permanece indefinidament

Como posso definir um tempo limite?

questionAnswers(2)

yourAnswerToTheQuestion