Example #1
0
        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();
            }
        }