Читаем C# 4.0 полное руководство - 2011 полностью

В некоторых случаях оказывается полезной другая форма метода Abort (), приведенная ниже в общем виде:

public void Abort(objectstatelnfo)

гдеstatelnfoобозначает любую информацию, которую требуется передать потоку, когда он останавливается. Эта информация доступна посредством свойстваExceptionStateиз класса исключенияThreadAbortException.Подобным образом потоку можно передать код завершения. В приведенном ниже примере программы демонстрируется применение данной формы методаAbort ().

// Использовать форму метода Abort (objectstatelnfo).

using System;

using System.Threading;

class MyThread {

public Thread Thrd;

public MyThread(string name) {

Thrd = new Thread(this.Run);

Thrd.Name = name;

Thrd.Start();

}

// Это точка входа в поток, void Run() { try {

Console.WriteLine(Thrd.Name + " начат.");

for (int i = 1; i <= 1000; i++)    {

Console.Write(i + " "); if((i%10)==0) {

Console.WriteLine();

Thread.Sleep(250);

}

}

Console.WriteLine(Thrd.Name + " завершен нормально.");

} catch(ThreadAbortException exc) {

Console.WriteLine("Поток прерван, код завершения " + exc.ExceptionState);

>

)

}

class UseAltAbort { static void Main() {

MyThread mtl = new MyThread("Мой Поток");

Thread.Sleep(1000) ; // разрешить порожденному потоку начать свое выполнение Console.WriteLine("Прерывание потока."); mtl.Thrd.Abort(100);

Console.WriteLine("Основной поток прерван.");

}

}

Эта программа дает следующий результат.

Прерывание потока.

Поток прерван, код завершения 100 Основной поток прерван.

Как следует из приведенного выше результата, значение 100 передается методуAbort() в качестве кода прерывания. Это значение становится затем доступным посредством свойстваExceptionStateиз класса исключенияThreadAbortException,которое перехватывается потоком при его прерывании.

Отмена действия метода Abort ()

Запрос на преждевременное прерывание может быть переопределен в самом потоке. Для этого необходимо сначала перехватить в потоке исключениеThreadAbortException,а затем вызвать методResetAbort (). Благодаря этому исключается повторное генерирование исключения по завершении обработчика исключения, прерывающего данный поток. Ниже приведена форма объявления методаResetAbort().

public static void ResetAbort()

Вызов методаResetAbort() может завершиться неудачно, если в потоке отсутствует надлежащий режим надежной отмены преждевременного прерывания потока.

В приведенном ниже примере программы демонстрируется применение методаResetAbort().

// Использовать метод ResetAbort().

using System;

using System.Threading;

class MyThread {

public Thread Thrd;

Перейти на страницу:

Похожие книги

1С: Управление торговлей 8.2
1С: Управление торговлей 8.2

Современные торговые предприятия предлагают своим клиентам широчайший ассортимент товаров, который исчисляется тысячами и десятками тысяч наименований. Причем многие позиции могут реализовываться на разных условиях: предоплата, отсрочка платежи, скидка, наценка, объем партии, и т.д. Клиенты зачастую делятся на категории – VIP-клиент, обычный клиент, постоянный клиент, мелкооптовый клиент, и т.д. Товарные позиции могут комплектоваться и разукомплектовываться, многие товары подлежат обязательной сертификации и гигиеническим исследованиям, некондиционные позиции необходимо списывать, на складах периодически должна проводиться инвентаризация, каждая компания должна иметь свою маркетинговую политику и т.д., вообщем – современное торговое предприятие представляет живой организм, находящийся в постоянном движении.Очевидно, что вся эта кипучая деятельность требует автоматизации. Для решения этой задачи существуют специальные программные средства, и в этой книге мы познакомим вам с самым популярным продуктом, предназначенным для автоматизации деятельности торгового предприятия – «1С Управление торговлей», которое реализовано на новейшей технологической платформе версии 1С 8.2.

Алексей Анатольевич Гладкий

Финансы / Программирование, программы, базы данных
iOS. Приемы программирования
iOS. Приемы программирования

Книга, которую вы держите в руках, представляет собой новый, полностью переписанный сборник приемов программирования по работе с iOS. Он поможет вам справиться с наболевшими проблемами, с которыми приходится сталкиваться при разработке приложений для iPhone, iPad и iPod Touch. Вы быстро освоите всю информацию, необходимую для начала работы с iOS 7 SDK, в частности познакомитесь с решениями для добавления в ваши приложения реалистичной физики или движений — в этом вам помогут API UIKit Dynamics.Вы изучите новые многочисленные способы хранения и защиты данных, отправки и получения уведомлений, улучшения и анимации графики, управления файлами и каталогами, а также рассмотрите многие другие темы. При описании каждого приема программирования приводятся образцы кода, которые вы можете смело использовать.

Вандад Нахавандипур

Программирование, программы, базы данных / Программирование / Книги по IT