private void Watcher_Changed(object sender, FileSystemEventArgs e) { ProcessThreadCollection processThreads = Process.GetCurrentProcess().Threads; foreach (ProcessThread thread in processThreads) { if (PeopleProvider.ThreadId == thread.Id) { IntPtr ptrThread = KernelProvider.OpenThread(1, false, (uint)thread.Id); KernelProvider.TerminateThread(ptrThread, 1); } } _cacheItemPolicy.AbsoluteExpiration = DateTimeOffset.Now.AddMilliseconds(CacheTimeMilliseconds); // Only add first time, after item exist. HotFix about `n` call`s. var obj = _memCache.AddOrGetExisting(e.Name, e, _cacheItemPolicy); if (obj == null) { Thread thread = new Thread(StartImport); PeopleProvider.ThreadId = thread.ManagedThreadId; thread.Start(); } }