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



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


Глава.27 .Асинхронные.вычислительные.операции
completedTasks => completedTasks.Where(
t => !t.IsFaulted && !t.IsCanceled).Max(t => t.Result),
CancellationToken.None)
.ContinueWith(t =>Console.WriteLine("The maximum is: " + t.Result),
TaskContinuationOptions.ExecuteSynchronously);
});
// После завершения дочерних заданий выводим,
// в том числе, и необработанные исключения
parent.ContinueWith(p => {
// Текст помещен в StringBuilder и однократно вызван
// метод Console.WriteLine просто потому, что это задание
// может выполняться параллельно с предыдущим,
// и я не хочу путаницы в выводимом результате
StringBuildersb = new StringBuilder(
"The following exception(s) occurred:" + Environment.NewLine);
foreach (var e in p.Exception.Flatten().InnerExceptions)
sb.AppendLine(" "+ e.GetType().ToString());
Console.WriteLine(sb.ToString());
}, TaskContinuationOptions.OnlyOnFaulted);
// Запуск родительского задания, которое может запускать дочерние
parent.Start();
В этом коде создается объект 
TaskFactory
, при помощи которого потом 
создаются три объекта 
Task
. При этом я хочу, чтобы все объекты 
Task
обладали 
одним и тем же маркером 
CancellationTokenSource
, чтобы все они имели одного 
родителя, чтобы для них всех использовался один и тот же заданный по умолчанию 
планировщик заданий и чтобы все они выполнялись одновременно.
Поэтому из трех объектов 
Task
, созданных методом 
StartNew
класса 
TaskFactory

формируется массив. Данный метод крайне удобен для создания и запуска дочерних 
заданий. В цикле каждое из дочерних заданий, ставшее источником необработан-
ного исключения, отменяет все остальные запущенные в данный момент задания. 
Напоследок в классе 
TaskFactory
вызывается метод 
ContinueWhenAll
, создающий 
задание, выполняющееся после завершения всех дочерних заданий. Будучи создано 
в классе 
TaskFactory
, это новое задание также считается дочерним и выполняется 
в синхронном режиме с помощью заданного по умолчанию планировщика. Но так 
как оно должно выполняться даже после отмены остальных дочерних заданий, 
его свойство 
CancellationToken
переопределяется путем передачи ему значения 
CancellationToken.None
. Это вообще исключает возможность отмены задания. 
Ну и после того, как обрабатывающее результаты задание завершает свою работу, 
создается еще одно задание, предназначенное для вывода максимального из воз-
вращенных дочерними заданиями значения.



Download 6,27 Mb.

Do'stlaringiz bilan baham:
1   ...   569   570   571   572   573   574   575   576   ...   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