2011-02-10 1 views
0

Я пытаюсь безопасно убить нить. В моей кнопке мыши у меня есть:VB.NET 1.1 Безопасная отмена потока

try 
    dim bar as new foo() 
    dim mythread as New System.Threading.Thread(AddressOf bar.Start) 
    mythread.Start() 
    sleep(1000) 
    mythread.abort() 
catch ex as Exception 
    msgbox ex.Message 
end try 

В моем классе у меня есть:

class foo 

public function Start() 
     Try 
     do some stuff... 
     Catch tae As ThreadAbortException 
      Thread.ResetAbort() 
     Catch ex As Exception 
      LogData("[ ERROR ] ", "[ Start ]" & ex.Message & " line: " & Erl()) 
     End Try 
end sub 

end class 

Когда он идет, чтобы прервать нить я все еще получаю поток прервать ошибку. Что я делаю не так?

+0

Вы не запустили нить. Почтовый код, который воспроизводит эту проблему. –

ответ

2

Это действительно невозможно «безопасно» прервать нить. Вместо этого вы должны сосредоточиться на наличии механизма, в котором вы можете уведомить поток, который он должен покинуть, и позволить ему совместно выйти (путем возврата из метода основной точки входа).