ПредишенСледващото

Днес се говори за големи индианците от Microsoft. които на пръв се и след това мисля.

По-специално, ние ще говорим за Таско. Аз няма да се боя за тях, защото това не е темата на днешната публикация. Накратко, това са теми са на стероиди, с вкусна и удобен ficham.

Една от характеристиките, това е черешката eksepshenov навън. Нещо като това:


Т.е. ние имаме нещо, което да изпълнява в отделна нишка, този път прави своите вещи, а след това да провери дали дадена задача отново и улови тази разлика, че за нас, увит в AggregateException (сега скрит вътре в него).
Т.е. получи доста готино функция, трябва честно да хванете изключения от други теми, в момент, когато ние знаем как да се справиш с тях. И това може активно да се използва (например, се крие цялата паралелната работа в рамките на метода, но probrasyvaya изключения навън).

Но има малко нюанс. Eksepshen препращате, защото, когато от Tasca нещо чака (резултат, или просто завършване). В стандартната терминология, това се нарича наблюдава. Т.е. трябва да се спазва дадена задача. Какво става, ако сме започнали и са забравили (или вкара)?


Оказва се, че eksepshen някъде да се загуби? Разбира се, че не! Доблестен експерти от Microsoft са помислили и дойдоха при хвърли изключение в деструктора. Оцени елегантност на това решение: разбива всички здравомислещи стандарти за кодиране, което води до спад в приложения и дава грешка в момента и на мястото, където е невъзможно да ги настигнем. Супер!

Може би мислят, че след като изключение в един обикновен конец предизвиква спад на приложения, както и тук е необходимо. Просто забрави за тази малка разлика от изключенията: ако искаме да осигурим нормална търговия, е достатъчно да напишете пробвам / улов, както и всички ще се радваме (все още е една от грешките, които не са обработени). Случай на ASCT, хвърли изключение от вътрешната страна може да бъде, а понякога и понякога е полезно. Но се оказва, че те Таско трябва да гледате и двете малки деца, въпреки че може и да не ме интересува в този момент в изхода на дадена сделка.

Решения на този проблем, по принцип, можете да мислят за няколко (различни опаковки, наблюдават използването на задачата), един е доста красиво:


Т.е. ние създаваме за удължаване-метод, който се прикрепя към продължаването на нашия Таско (продължение), в която ние приемаме стойността на изключение (това определено трябва да направите! точно Tasca отново са налице обозрими (наблюдавани)), както и да се гарантира, че системата.

Проблемът е решен, и аз се надявам, че имате това ще доведе мат по-малко от имам по мое време, когато се качих на този проблем. И аз трябва да го още една причина.

Отначало съзнателно пише, че Microsoft за първи път, а след това започнах да мисля. Но след като си помисля, те разбраха, че поведението е твърде глупав и да убие всички нужди на заявление никого. И в 4.5 променена логиката, така че 4.5 е вече моя пост е без значение.

Но без нюансите от Microsoft е пълна, за 4.5 всъщност заместител на 4.0. Изненада! Т.е. инсталиране на 4.5, всички приложения, написани под 4.0 започват да работят по факта на 4.5, а малко по-различно. Така например, в този случай, вече не се появява грешката (има и някои други разлики в поведението, но е твърде произнася). Върнете стария поведение може да бъде довереник. но кой се притеснява четене всякакви луди и безполезни опции?

Понякога просто искате да бъде убит главата в стената на такива гениални обрати.

Подкрепете проекта - споделете линка, благодаря!