Muszę zakończyć zatrzymany wątek, ustawię IsBackground jako prawdziwy, ale pozostanie przy życiu. Właściwości wątku:Zabij wątek, naprawdę!
ThreadState = AbortRequested
IsBackground = true
Kiedy zbadać zamrożoną miejsce znajdę linię poniżej:
resultDetect = Detect(input, ref output);
Plamka jest 3rd party kod (Method Detect). Wątek aktualizuje tylko resultDetect, jak widzisz. Muszę przerwać ten wątek i ponownie uruchomić nowy, aby kontynuować. W przeciwnym razie aplikacja czeka i nic nie robi - świeży wynikDetect potrzebny -
Jak mogę zabić nici, która nie umiera?
To już jest po stronie serwera kodu. Metoda skanuje dużą ilość danych (~ 1 GB pamięci RAM). Jak mogę rozpocząć nowy proces w super szybki sposób? Powiedzmy, że podzielę stronę serwera na sekcję bazy/pamięci i sekcję skanowania ... Więc mogę zabić sekcję skanowania. Chyba zadam nowe pytanie. –
@Nime: Nie ma prawie wystarczająco dużo szczegółów, aby kontynuować, ale wspomnę, że ['MemoryMappedFile'] (http://msdn.microsoft.com/en-us/library/system.io.memorymappedfiles.memorymappedfile. aspx) klasa umożliwia współdzielenie pamięci między procesami, więc jest to szybki sposób nadania procesowi skanowania dostępu tylko do odczytu do uchwytu danych, a jednocześnie jest w stanie go zabić niezależnie od głównego procesu. –