В моем приложении ASP. NET Core 2.2 я вызываю встроенную функцию через PInvoke. При некоторых условиях функция приводит к бесконечному l oop. У меня нет доступа к источнику библиотеки.
Вот как я выполняю функцию в отдельном потоке:
var thread = new Thread(
() =>
{
threadId = GetCurrentThreadId();
try
{
result = callFunctionWithPinvoke();
}
catch (Exception ex)
{
threadEx = ex;
}
})
{
Name = "Calculation",
Priority = ThreadPriority.Highest
};
thread.Start();
Через некоторое время я пытаюсь остановить поток, как этот :
thread.Interrupt();
thread.Abort();
if (thread.IsAlive)
{
var success = TerminateThread(new IntPtr(threadId), 1);
var lastError = GetLastError();
}
Даже очень плохая Функция TerminateThread не может уничтожить поток.
Мой вопрос сейчас: что мне здесь не хватает? Можно ли убить поток с бесконечным l oop, или это просто невозможно?