Net framework 5, а также среды Visual Studio 2012 и C#


Задания структура задания



Download 6,27 Mb.
Pdf ko'rish
bet570/658
Sana12.06.2023
Hajmi6,27 Mb.
#950840
1   ...   566   567   568   569   570   571   572   573   ...   658
Bog'liq
CLR via C Programmirovanie na platforme Microsoft NET Framework 4 5 na yazyke C

765
Задания
структура задания
Каждый объект 
Task
состоит из набора полей, определяющих состояние задания. 
В их число входят: идентификатор типа 
Int32
(предназначенное только для чтения 
свойство 
Id
объекта 
Task
), значение типа 
Int32
, представляющее состояние выпол-
нения задания, ссылка на родительское задание, ссылка на объект 
TaskScheduler

показывающий время создания задания, ссылка на метод обратного вызова, ссылка 
на объект, который следует передать в метод обратного вызова (этот объект досту-
пен через предназначенное только для чтения свойство 
AsyncState
объекта 
Task
), 
ссылка на класс 
ExecutionContext
и ссылка на объект 
ManualResetEventSlim

Кроме того, каждый объект 
Task
имеет ссылку на дополнительное состояние, соз-
даваемое по требованию. Это дополнительное состояние включает в себя объект 
CancellationToken
, коллекцию объектов 
ContinueWithTask
, коллекцию объектов 
Task
для дочерних заданий, ставших источником необработанных исключений, 
и прочее в том же духе. За все эти возможности приходится платить, так как для 
хранения каждого состояния требуется выделять место в памяти. Если дополнитель-
ные возможности вам не нужны, для более эффективного расходования ресурсов 
рекомендуем воспользоваться методом 
ThreadPool.QueueUserWorkItem
.
Классы 
Task
и 
Task
реализуют интерфейс 
IDisposable
, что позволяет 
после завершения работы с объектом 
Task
вызвать метод 
Dispose
. Пока что этот 
метод всего лишь закрывает объект 
ManualResetEventSlim
, но можно определить 
классы, производные от 
Task
и 
Task
, которые будут выделять свои ресур-
сы, освобождаемые при помощи переопределенного метода 
Dispose
. Разумеется, 
разработчики практически никогда не вызывают метод 
Dispose
для объекта 
Task

они просто позволяют уборщику мусора удалить освободившиеся ресурсы.
Как легко заметить, у каждого объекта 
Task
есть поле типа 
Int32
, содержащее 
уникальный идентификатор задания. При создании объекта это поле инициализи-
руется нулем. При первом обращении к свойств 
Id
(доступному только для чтения) 
в поле заносится значение типа 
Int32
, которое и возвращается в качестве результата 
запроса. Нумерация идентификаторов начинается с единицы и увеличивается на 
единицу с каждым следующим присвоенным идентификатором. Чтобы заданию был 
присвоен идентификатор, достаточно открыть объект 
Task
в отладчике Microsoft 
Visual Studio.
Идентификаторы были введены для того, чтобы каждому заданию соответство-
вал уникальный номер. В Visual Studio идентификаторы можно увидеть в окнах 
Parallel
Tasks
и 
Parallel
Stacks
. Но так как присвоение идентификаторов происходит 
автоматически, практически невозможно понять, какие значения к каким заданиям 
относятся. Тем не менее можно обратиться к статическому свойству 
CurrentId
объекта 
Task
, которое возвращает значение типа 
Int32
, допускающего присвоение 
значений 
null
(
Int32?
). Узнать идентификатор кода, отладка которого происходит 
в данный момент, можно также в окнах Visual Studio 
Watch
и 
Immediate
. После этого 
остается найти это задание в окне 
Parallel
Tasks
или 
Parallel
Stacks
. Если же запросить 
свойство 
CurrentId
для задания, которое не выполняется, возвращается 
null
.


766
Download 6,27 Mb.

Do'stlaringiz bilan baham:
1   ...   566   567   568   569   570   571   572   573   ...   658




Ma'lumotlar bazasi mualliflik huquqi bilan himoyalangan ©hozir.org 2024
ma'muriyatiga murojaat qiling

kiriting | ro'yxatdan o'tish
    Bosh sahifa
юртда тантана
Боғда битган
Бугун юртда
Эшитганлар жилманглар
Эшитмадим деманглар
битган бодомлар
Yangiariq tumani
qitish marakazi
Raqamli texnologiyalar
ilishida muhokamadan
tasdiqqa tavsiya
tavsiya etilgan
iqtisodiyot kafedrasi
steiermarkischen landesregierung
asarlaringizni yuboring
o'zingizning asarlaringizni
Iltimos faqat
faqat o'zingizning
steierm rkischen
landesregierung fachabteilung
rkischen landesregierung
hamshira loyihasi
loyihasi mavsum
faolyatining oqibatlari
asosiy adabiyotlar
fakulteti ahborot
ahborot havfsizligi
havfsizligi kafedrasi
fanidan bo’yicha
fakulteti iqtisodiyot
boshqaruv fakulteti
chiqarishda boshqaruv
ishlab chiqarishda
iqtisodiyot fakultet
multiservis tarmoqlari
fanidan asosiy
Uzbek fanidan
mavzulari potok
asosidagi multiservis
'aliyyil a'ziym
billahil 'aliyyil
illaa billahil
quvvata illaa
falah' deganida
Kompyuter savodxonligi
bo’yicha mustaqil
'alal falah'
Hayya 'alal
'alas soloh
Hayya 'alas
mavsum boyicha


yuklab olish