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



Download 6,27 Mb.
Pdf ko'rish
bet564/658
Sana12.06.2023
Hajmi6,27 Mb.
#950840
1   ...   560   561   562   563   564   565   566   567   ...   658
Bog'liq
CLR via C Programmirovanie na platforme Microsoft NET Framework 4 5 na yazyke C

757
Задания
задания
Вызвать метод 
QueueUserWorkItem
класса 
ThreadPool
для запуска асинхронных 
вычислительных операций очень просто. Однако этот подход имеет множество 
недостатков. Самой большой проблемой является отсутствие встроенного меха-
низма, позволяющего узнать о завершении операции и получить возвращаемое 
значение. Для обхода этих и других ограничений специалисты Microsoft ввели 
понятие 
заданий
(tasks), выполнение которых осуществляется посредством типов 
из пространства имен 
System.Threading.Tasks
.
Вот каким образом при помощи заданий выполняется операция, аналогичная 
вызову метода 
QueueUserWorkItem
класса 
ThreadPool
:
ThreadPool.QueueUserWorkItem(ComputeBoundOp, 5); // Вызов QueueUserWorkItem
new Task(ComputeBoundOp, 5).Start(); // Аналог предыдущей строки
Task.Run(() => ComputeBoundOp(5)); // Еще один аналог
Во второй строке после создания нового объекта 
Task
немедленно вызывается 
метод 
Start
для запуска задания. Естественно, вы можете создать объект 
Task
и вы-
звать 
Start
для него позднее. Можно также представить код, передающий созданный 
им объект 
Task
какому-то стороннему методу, который и будет определять момент 
вызова метода 
Start
. Поскольку создание объекта 
Task
с немедленным вызовом 
Start
выполняется так часто, также можно воспользоваться удобным статическим 
методом 
Run
класса 
Task
, как показано в последней строке.
Для создания объекта 
Task
следует вызвать конструктор и передать ему делегата 
Action
или 
Action
, указывающего, какую операцию вы хотите выпол-
нить. При передаче метода, ожидающего тип 
Object
, в конструктор объекта 
Task
следует передать также аргумент, который должен быть в итоге передан операции. 
При вызове 
Run
передается делегат 
Func
или 
Action
, определяющий 
выполняемую операцию. Также конструктору можно передать еще и структуру 
CancellationToken
, позволяющую отменить объект 
Task
до его выполнения (эта 
процедура подробно рассмотрена далее).
При желании конструктору можно передавать флаги из перечисления 
TaskCreationOptions
, управляющие способами выполнения заданий. Элементы 
перечисления определяют набор флагов, которые могут комбинироваться по-
разрядной операцией ИЛИ. Перечисление 
TaskCreationOptions
определяется 
следующим образом:
[Flags, Serializable]
public enumTaskCreationOptions {
None = 0x0000, // По умолчанию
// Сообщает планировщику, что задание должно быть поставлено
// на выполнение по возможности скорее
PreferFairness = 0x0001,
// Сообщает планировщику, что ему следует более активно
продолжение



758

Download 6,27 Mb.

Do'stlaringiz bilan baham:
1   ...   560   561   562   563   564   565   566   567   ...   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