В Java Thread.interrupted() проверяет был ли вызван для потока метод Thread.Interrupt()
В .NET аналогичного метода нет. Может кто-нибудь знает хоршую реализацию/обходное решение для .NET?
Спасибо
PS:
Такое решение не подходит из-за переключения контекста при вызове Sleep(0)
Здравствуйте, Аноним, Вы писали:
А>Привет
А>В Java Thread.interrupted() проверяет был ли вызван для потока метод Thread.Interrupt() А>В .NET аналогичного метода нет. Может кто-нибудь знает хоршую реализацию/обходное решение для .NET? А>Спасибо
А>PS: А>Такое решение не подходит из-за переключения контекста при вызове Sleep(0)
Здравствуйте, Caracrist, Вы писали:
C>Здравствуйте, Аноним, Вы писали:
А>>Спасибо, но нет, Thread.Abort не подходит
C>ThreadInterruptedException C>+ C>Thread.Interrupt(); C>
эмм???
ThreadInterruptedException происходит если для потока вызван thread.Interrupt() и сам поток пытается перейти в состояние WaitSleepJoin.
В первом посте есть ссылка на решение через ThreadInterruptedException. Оно не годится из-за переключений контекста.
Здравствуйте, Аноним, Вы писали:
А>эмм???
А>ThreadInterruptedException происходит если для потока вызван thread.Interrupt() и сам поток пытается перейти в состояние WaitSleepJoin. А>В первом посте есть ссылка на решение через ThreadInterruptedException. Оно не годится из-за переключений контекста.
я понял(кажись) нужен один бит информации и доступ к нему через Thread object. Вроде как System.Threading.Thread такого не поставляет
Однако, могу предложить вариант, если потоки создаются через Factory:
C>я понял(кажись) нужен один бит информации и доступ к нему через Thread object.
Именно так
C>Однако, могу предложить вариант, если потоки создаются через Factory:
Идея понятна, но потоки могут создаваться как угодно . У меня есть только "код-в-потоке".
Здравствуйте, Аноним, Вы писали:
А>Привет
А>В Java Thread.interrupted() проверяет был ли вызван для потока метод Thread.Interrupt() А>В .NET аналогичного метода нет. Может кто-нибудь знает хоршую реализацию/обходное решение для .NET? А>Спасибо
А>PS: А>Такое решение не подходит из-за переключения контекста при вызове Sleep(0)
Не силен в Java, но если тебе надо прервать выполнение потока в тот момент, когда он к этому готов, то можно либо какую-нибудь переменную завести и проверять ее состояние, либо посмотреть в сторону CancellationToken.
Здравствуйте, Аноним, Вы писали:
А>Привет
А>В Java Thread.interrupted() проверяет был ли вызван для потока метод Thread.Interrupt() А>В .NET аналогичного метода нет. Может кто-нибудь знает хоршую реализацию/обходное решение для .NET? А>Спасибо
Этого достаточно?
public static class ThreadMonitor
{
[ThreadStatic]
private static bool _interrupted;
public static void Interrupt()
{
_interrupted = true;
}
public static void IsInterrupted()
{
return _interrupted;
}
}
и подумай, чем обусловленна разница в реализации...
Интерестно и чем же они отличаются? Громоздкостью?
Re: Аналог Java Thread.interrupted()
От:
Аноним
Дата:
25.09.12 13:33
Оценка:
Здравствуйте, Аноним, Вы писали:
А>Привет
А>В Java Thread.interrupted() проверяет был ли вызван для потока метод Thread.Interrupt() А>В .NET аналогичного метода нет. Может кто-нибудь знает хоршую реализацию/обходное решение для .NET? А>Спасибо
А>PS: А>Такое решение не подходит из-за переключения контекста при вызове Sleep(0)
Здравствуйте, Caracrist, Вы писали:
C>Здравствуйте, Danchik, Вы писали:
D>>Интерестно и чем же они отличаются? Громоздкостью?
C>Возможностью доступа из другого потока, то есть работоспособностью, как таковой...