У меня есть код на c #, который использует следующее
ThreadPool.QueueUserWorkItem(new WaitCallback(parseEventLogsWmi), new object[] { server } );
, и у меня есть сервер, который вызывает зависание кода и, в конечном итоге, сбой, потому что запрос WMi не завершается своевременно. Я полагаю, что что-то не так с WMI на сервере, несмотря на то, что мне нужен способ справиться с этим, и функции времени ожидания WMI не работают. Я получу ошибку тайм-аута или ошибку квоты в конечном итоге от WMI.
var conOpt = new ConnectionOptions();
conOpt.Impersonation = ImpersonationLevel.Impersonate;
conOpt.EnablePrivileges = true;
var scope = new ManagementScope(String.Format(@"\\{0}\ROOT\CIMV2", server), conOpt);
SelectQuery query = new SelectQuery("Select * from Win32_NTLogEvent Where Logfile = 'System' and TimeGenerated >='" + dateTime + "'");
ManagementObjectSearcher searcher = new
ManagementObjectSearcher(scope, query);
searcher.Options.Timeout = new TimeSpan(0, 0, 30);
searcher.Options.ReturnImmediately = true;
Существует ли рабочий способ ограничить результаты обратно из WMI до 1000 результатов или заставить работать функцию тайм-аута или получить остальныепотоки, оставленные в пуле потоков после определенного периода времени, и прервать поток в пуле потоков?