Delirium
27-10-2008, 04:58
Пишу небольшое приложение, использующее WMI для сбора данных с удаленных машин. Все работает, за исключением одного: В случае, если компьютер выключен/на нем нет WMI/другая причина недоступности, то соединение происходит очень долгое время.
Все попытки уменьшить таймаут для попытки соединения ни к чему не приводили. Вот как пытался:
ConnectionOptions connOptions = new ConnectionOptions();
ObjectGetOptions getOptions = new ObjectGetOptions();
getOptions.Timeout = new System.TimeSpan(0, 0, 2); //2 секунды
//ManagementScope machineScope = new ManagementScope(machineWmiNamespace, connOptions);
//scope.Options.Timeout = New TimeSpan(20000000) //другим способом 2 секунды
scope = new ManagementScope(pcstr, connOptions);
scope.Options.Timeout = new TimeSpan(0, 0, 0); // и даже 0 секунд
scope.Connect();
Результат нулевой. Вот что вычитал путем гугливания:
Remote WMI queries are subject to the system-wide TCP/IP connection timeout settings. A two second timeout for the first attempt, 6 attempts, doubling the timeout each time. 2 + 4 + 8 + 16 + 32 + 64 = 126 seconds. You can try hacking the TCP registry settings, not sure if that's a good idea.
Такой вариант меня тоже не устраивает.
ПРобовал использовать PING, ответ получаю, проанализировать могу, но все равно очень долго. Есть ли какой нибудь способ указания таймаута при коннекте WMI на удаленную машину?
Все попытки уменьшить таймаут для попытки соединения ни к чему не приводили. Вот как пытался:
ConnectionOptions connOptions = new ConnectionOptions();
ObjectGetOptions getOptions = new ObjectGetOptions();
getOptions.Timeout = new System.TimeSpan(0, 0, 2); //2 секунды
//ManagementScope machineScope = new ManagementScope(machineWmiNamespace, connOptions);
//scope.Options.Timeout = New TimeSpan(20000000) //другим способом 2 секунды
scope = new ManagementScope(pcstr, connOptions);
scope.Options.Timeout = new TimeSpan(0, 0, 0); // и даже 0 секунд
scope.Connect();
Результат нулевой. Вот что вычитал путем гугливания:
Remote WMI queries are subject to the system-wide TCP/IP connection timeout settings. A two second timeout for the first attempt, 6 attempts, doubling the timeout each time. 2 + 4 + 8 + 16 + 32 + 64 = 126 seconds. You can try hacking the TCP registry settings, not sure if that's a good idea.
Такой вариант меня тоже не устраивает.
ПРобовал использовать PING, ответ получаю, проанализировать могу, но все равно очень долго. Есть ли какой нибудь способ указания таймаута при коннекте WMI на удаленную машину?