From 829380c6ab74f4a6caca31e8c9627d0a0d8c741d Mon Sep 17 00:00:00 2001 From: jeffreypriebe Date: Sun, 16 Nov 2014 14:37:48 -0800 Subject: [PATCH 1/8] Added Lucene.Net.2.9.2.2 in packages-legacy folder (NET3.5 compatible version) --- .../Lucene.Net.2.9.2.2/Lucene.Net.dll | Bin 0 -> 741376 bytes 1 file changed, 0 insertions(+), 0 deletions(-) create mode 100644 src/packages-legacy/Lucene.Net.2.9.2.2/Lucene.Net.dll diff --git a/src/packages-legacy/Lucene.Net.2.9.2.2/Lucene.Net.dll b/src/packages-legacy/Lucene.Net.2.9.2.2/Lucene.Net.dll new file mode 100644 index 0000000000000000000000000000000000000000..138ec60820b8329938127dfd7764c539bf3c4f28 GIT binary patch literal 741376 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≠Zn7gc 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%0D@?xf(Z$8HNbjC`~P}TS}B{a55 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

fu)eo!w09)1WPj+Ny09n{Tvvd@G*7-94C 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 O82R}@9=v958y;f%P*ibmnO2wFsmgaDhX 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

RzjS?r15b&0Kf2 zfZs)I8`nK;C}}6x|Fj3By(vnC; ze3bst(nr#w0;HUOeZ8-{#jxT(kYR@PJ$I&zG zKN8##`AoC^6#3wu%V$~_65Mn7Ogn~3WvzOz;y;C*cw3}|yDSxb9trNURP>)w;&VmS zZ=ed4(Y+7(sJiPf(f6sn3w&I<8zs&}{G~Sd=h4%8f5&6bwY2w-KK$oLCTBEyf zE&VdZU`4E+ewPF*V)b;dC!#H|B34h2Ai;{*YkG>1@{n)aNWIKckrLMUBJ~gwthq(% zRYz?~&qIkG)z{CXM2}wAub`lvgM44tpNf1+B(R)34ssZXYFj1F%-gDcfueU|&S z)5nnp_W8(YFH34=4|V{&nSd>59HX|GM$J zW`&^D-F2J4vk1l-+Sx-dgMu3N`u5P_eMS(2C%b#<9Y`?Nz4SgLIF5Sh(@AjL_SP4m zpk-hB_STo7U=KO!+ecrGf@`85xdL3G259G7dJGBL*-uXupI{I z!CFa=-qvGDupI{KGf>c$C^kr6h=Tq-^c|#U3$fG9nBNe62Wfl54A)Q{-mC}5Z7_f6 zd6>QkmBHY7ykUBT39&R*zpw2#T;D;0S)AdzAAfrx#G3cb=juWFtA(#$yk3aPV6FOQ zvIPAY#X9u$^-ItL_&X8Bc_NC9&<~>0SaiR9u1BP|`bDyldR<4Ip);M}7Q8 z=~4V0&QSZ@ewl2H9!G)|xH0-ZQYOzgRuABB41<(#FV#4G9OfR(RE|DvcXvBik{AY%Nbf0)<2$2)o+q&^L*3vnn5Dgygz@IO&?0?g4#%e zE0$^c6;d3pVVWMp-`xpiCiY+IH(hTQD)dhOHGau@ThiSA*?u$i9#XsfQuWngB4t+p zNS3ajC++C}wO_g(5H4az`g^#Rpi>oxiN(V@Oe{eSUWpwA=S>Ce=K`Wcck z;F{key>11OGH^h#-(o$P^vVGK9ai__za0ssM55NC_%}XOF~xcg$mb~^kj4&(WSKgD z#2E9<=P5JwW~Ai<*10qF9hD%K%61H3>Jt4RY59PAeoOVKFNxUU0gwHb>ETs`j`JGc z*ON)V3{cBt=@(IHteDrZLXUe{r2MOeU1o*es46Ip{WBnntuO8DV>2w*@yaSQV7>-{XFTVfiIO=qgSaWQf3USS7yDQPg*vx0heEO5!*Ddd6|#( zSkl&kQEY?0q!z@)HRcArO>Iz?_0_;wuMK)f(nS;x@V`9s)j=_3Ht0PtCO%0v>T#$% z6=ECpbtpJ1MzKwLwh$XO=z_LM-(M=WS$^V;9Tde%1jkW{CJ!p+`Udl*vDt(AmD#L+ zhZ41C>!(p32Bl={Ka!x7Z2cSwO3BuLMv0bX>sO@)m&w+jq2SCuxJ-_2)Pa$JPni*A zw&;E+4}VK8qTwC*ON#;4$5TP z^@F5KC{_>3Ok>aoo)X1ZDtO-SL^Y)kYzWp?NZk=RaN!|XDj>$6eNmf2;#&=-mr z@58%gcIwMeqV}D7Hp+uF?9>mCV3c<1g(MiyowSYeOn7#+ME|x}$IIl6##mT%1`}TA4h_xqQB9nkl^X&e0?Sfo^H<9=aArOB#%B11y@Md%kXyv z2(b=>|15JvzamoN6IDm_$0%`h9M%0AL94};&QZMzDvc!#&SyvUfh4UppPSL=kfsif z;@U)-f!a+P&7TqbR?kQAJDo6QHGV#x|CISw{{ofg3K|m0zSj?u0{J(M@AW=SL|ZBh z8Lb@Gt)`#?<<%ki><4`+D$fNYctYPnN^4nJJE7NXCi1;LB#ND){iQ&U9-{i6(#J%J zQo8a|&ghF!FiMX9kNSR;c#i#?o=1Z3=;!p)B>1L(PQOBeZ~EtSy*ZTWVen1=oL-#- z-{ybPn~>l;<F7ZV8B|Qqu6npt4y){Z~u}gY4 z6l~2f|4aH3Av^-E=*1*hibQ`()kFM=uoR6UL|^e$V>iLWy&>NMN*si z*1V>_*8;{xwDX$28U-zD?0-$aiON$U9Q zv8X&1`fy86k{aUmhklGwJ{{7=zgSOr14`jDp1hs6^)n=B^}R=lIzLcE<( z?2cYWs=NOky*UbMucJKBM^e6OL;2k>`UFya)O1pF)NE2LY5@t>Hy`Tnk$Mds+)=U<}j4Tt&vEo1Qg;U6hD^F5Y=Zv~I_RamAN`N#Ulq6XfhB>%_yuP6_G3wf$P zB|#0(^sHzY3Gw;xpZ*yM%KT41K!TS2r{|+!Yx4OlL%bLy&jrtfDn^yoIM%Mrp)>sz z!)PM}Pl&2UBU0ATqg*kh4MQ`T%a}^a9y-V0Wz>v;d~j^$Guvn?#6IUE=oqa?`-bLo z@nrnZqklDYg}>YAi7{x|I)5)?sMPf`-o`GeP5wT{Q@jHO?pge#Xn~a3qwo zLqGBNH|nAal)r~&vj8KBX zRSUmFr)_NJhb(D;Km^ zjYU#-{c9Rt9Yx9-4gU78Wek;4%GNXTNe6~Su}CAhlSrA==$3z^ksy`p-@rJG@+h$P zG&BlHuvXB}I3vWi4(q{Xb%s))E&Oeu#&Q&YujVkTY-8g9DubOGHr1<%kxwbF3@cN% ziE*EFlRsPC)ObR=!DCGgwF{J)!R~T3Gi(%`O~cDZ8U82_uCX^aDvFf+%Bot~=Ef^1 z*gwO$qA6d%@F>>8$PxK)-M)pfj}$h%UYQogY0@@658cA}i3BTfEsTpODD%933*&}} z@oT;w>`mh~33}AZcpzhU{iBViQWvz=hN~;~h?jEMyN%HZZsxwkQ&1hdP%jTI!A(d}bACBbY{U!(3iXp6X`wXd<5 z1T)WX8969u=hU+OjOOb_O1Q2YXmlXKjORe34+*Xg2O5bam{T2S97CnD?}tMy?junO z%vBCFHj&`UaiFn}1oN$f=)6>*pBY|X8EjPh81jj`#s?dTq#3oM*kEHDY7V>1_rbwN zzy?S;hryc%1{+;aVm5TJ@d*j;B_3jYgM$8LmK|bTL=`ZoZ-jAvqo}V{uaC-(Fq&-= zGU6lIC?hyqC^Y`lvZIWtDA<1WtVClu3f`94-yChMC&5!;V~i6ykk7-P6kKVJH@vn! zS2uH#(TN04R82K{qoB+^Wv3YlC^$Cvlub5fi5Nc`J!NMZb15G@?=;JJp9IfBr5GDX z@SIetkxPPSq0;18zji#oYrybeOq_*FVsLDhD3gEYl-8-T>9Ul}p$FLA!&=lR;BcCn#ugZf0u_YCI+)sTv3?-^aC{#SOHF-+=l+2uwG%A>$2Wf`+chxk1N zSw<%5eT=OZ`K)#EYCx8;k+dz|;`)@78=uHNF!qzaiRbVAF@6+c-^H)eR~SVUD~k6G zSZM@*ihZ!|#s_l6kp7L&WUGvxBqsqhm=u<wLg&<0;8K;&Q-V zWBM0Ril}{`F&mX-y*eV+YoC!pYK)pM#M+Ly6R^)XR4U(oqmW|H5*`NZH-dMTlzG62 zKxMIK2~PqJ7%5Ul;34CRluzJcqvfvWJt`OYjd6lBdPG=Yo)NoS#9$-}j4@J`13ku4 zl;}gDv65nTuUdhH#x|+Qz;BJOq#6evGrpH<5qR9VLQ3k;I`D+iY>%ifsY8drQ^pFZ zu7PKaBB|biXN~rIOL}|WXpRzl$a$k1DvQC$pEt&lJ{@sB;3s1Vse7;ffftQKDA9*s zj6#a-A2B5G7vou}*k!}o2leH%;t^Z*%SJEK!x6{I{Avt9rLuoV@b8UAI>~D!=nl%m zuV&uz`OUC$p%f3lT1yHnGU^Ih{v$8>6dAinVIz0zMaGw;DkIP{~ z@5fT`TKJanChAwE$;hc*w~Y2E(W6_&V5uGYEn|tuhb#QQ8!JT2N*|fcem6Fe;QaEt z@rBH{B=C3RYt(i7`;l3Je;8*-=Xkz9jEkhps3H>Fo%x4xUkI-U|1hEtK&!7SaMu6B zcpH_)s*d`YmpKU~TK$JH5hb?fAI1zyxg|P>r<_Y_I4URbPh*wT_Q1c49i%J6_5|KF zu8?9zeHHjWBlsZHp2cED?FoEfbdf3y{M*<_x-zUV@E_w2Y3s1_flrL+FGaqs!>$HC zGm=Pgqy7l|&p0FXAds1fUx}1sM?DQx%#EZOwX||BGvcs_HSg8~s%298W^D*0slx%Cym~y`6+okgPnekGc%K4e& zr1DuAGnw*bkLpv--+YQ%$_|WryIfiG*f&u7QhrBBQn^5LeIDq#Qlmk7xgc{3N}QpC z&AlWzLx-4$QCWP?dbeDN*(hJ+gV~=@vn2}pu%cY3*#{-IZMeA#m1X@lD#ttA{D|}? zDhDM-BHY~ZLcSuAlD(R^wOqLARRHy6u_lQ-xay;x=WB+7+IQ&T=HDX5rYD{%Ti(HK`+sMdeC#I`MY78ZYE~Ri@m;+fqvk>Z>hvI`KiddS(Q+TJ-NVv)>Wy5epuj z&mzqcr0IzVS$%UF31*ubni)da_lD*&id7n2P_E$%ZD}Oy+mx8knn)c<3=L{31$}S+ zLcSIR&D z9hqnr9Yra3>qT4Y<+?u?;Ypz5yLW;ln-;6|wZ-b+;oxBG9 z-_bLJMw?A3W{insW6V~h@G((bv8V#2{+N8OI1$4)z>hT(N$^c^oOy@xwI7oaG~Rqf z>NjQ)m-e0L5gh#!%w{CGpJ9UeAxezPMA@=Ujg|#XGz%~$W`8D`-=oBlI?4PQC1!Ld zng2t1l*7E8lgy{2)4WHMP3@Q%!Rupccuh9FN&k$g<2A($7UDfx7Bt0d_I*h^rA2r3}y&sn)Og3 zcMdo=DjP)XO)T!sK{yb>0nJSgfGR-9@@us^a=0%ivPUAhf_rN`LC4w2V z60Pd}wyQ)F#{6~=KWH&e_%E|4ed
$0+-AQRJ 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%0A)r;v%^`w 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 F{x{nhNf-bC literal 0 HcmV?d00001 From b90838d62be83ea3c1cd988b8723e2905caf8421 Mon Sep 17 00:00:00 2001 From: jeffreypriebe Date: Sun, 16 Nov 2014 15:12:20 -0800 Subject: [PATCH 2/8] Added System.Threading.1.0.2856.0 for System.Collections.Concurrent Support in .net 3.5 --- .../System.Threading.dll | Bin 0 -> 387408 bytes .../System.Threading.xml | 19811 ++++++++++++++++ 2 files changed, 19811 insertions(+) create mode 100644 src/packages-legacy/System.Threading.1.0.2856.0/System.Threading.dll create mode 100644 src/packages-legacy/System.Threading.1.0.2856.0/System.Threading.xml diff --git a/src/packages-legacy/System.Threading.1.0.2856.0/System.Threading.dll b/src/packages-legacy/System.Threading.1.0.2856.0/System.Threading.dll new file mode 100644 index 0000000000000000000000000000000000000000..0230d71d42a504487751bf617fcc122817b0b0de GIT binary patch literal 387408 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

1AadFG61|4_*Zh$_QIia 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�(dT!Js~HJM{d%100`4HL6X4bXE`a^aE^Zii@ESMZ zFLrVB#p5FYSB@WSa`R2&VQ%DE6E<@v|?ZufED#H6l1zF=Z2fa@j}boE22DTV;R`w9Y3 zyTb)O-gDx2UHrUw1)NCm>g6x5^z+p#x)p`^Z&Uq6LB8c-n4`#6kpH^-$jTDHcUVeE zvXr=`#4Y7l?YU@G8F77l?4Gf!e7tbauvO(miLlZ=%U6XJynN4Nt0D@%9q18QyN7g* z@~la-0AjtOJa47lIRPUvuwqAxSkISz;zkFETA#T()d7Oo(wyU zet8z_+`w%B*MUxpH9Gz-z@H4j>dEn*l*Rgd;E=&$y*p5p=jK>Dq`%e0Vr_Z*ETH@d zJqND@d)%9DMV;x^s=xw(wf&CR(yf*$lauV$(bH!ea;*KLD&Yps}a5-2AE%kv!I?don`>N8&IKe<4u&^fI*>Yb#`1(X}Q$2LWPEK-4SPPf+;;FenZ$0&{JeTz*f*lBYr!LV4K+lRhf}nq9w;+5hWnMNndKs4jK$)RvZ^WYtLyFx>75Sub_1-NS0dLEr&A)YuDvS$Gi4^ z;^LX`D}dvu^n;$m$ujj-2edxM99!Q(?e3+Kn+|;gW?Jj94oA9`TOXJ?J0ou(>?(B@w8n4afT_^;wXrK{waoX>u=LO=@tbX#)9?A>8Qap9q}&HJLE^L z8DO!Je5);`lc0EbNX=G(#N;rR}!&-7;jzCC@l-XVPscD-~@JeO(|qZ-AiMlq^U%!)ON zL5;r7k5P?cRHK+xn(+%zuwF5!OOm^q>QYU0iBVmusV>!2mul-pGbXufsV=otmpZ6R zX{m$if-sg}OLeKGy3|2kc9+&uf3COAp1urxhG!C>7Fe$;klduNBUn#kBnEhf+evkl zZCA`#?~ZZYWm#-Btq;1>0q!%|0e2;!YMi)}E`f19?)?F4xkakg1NaoV;M7v}+|t&}LE0j86-bQ|6sOSe5i6r7Rl zKtFA^lNCEz0SZ{L+t7-gtk`Y8O?%VrA}cPk;vy?{8(MLZ6_*XIn|^CZGLMyIE^N z^Fy=N@R0Pxtl5T;4X>d>HsfA|#bH=4YSn!2f`0Rvv+lu18NugUk4=Ov(_Z$XKzVRjFIShmE5rAln1LGsS3B@f}+ z!N%u2X)Lvko^ww@sqLaUlaoqq?dRMDc&|BA01lcnAK>Lchgv|i%WSygD!1W|Jq&Q1 z!7t&?$`7+^Zb1a>4u=&1SCA;+a*v2j-!_;Zpt@8-52-7tv`wG$BS7qdl{Os9mA0jz zKW4+3s+u&%Y&f6P+Sbfz-J=fl^ypDi7Eida2RVBLg>wYHfpceTu+g#x6RxO*D^M|-mJAfGpBQpLRJjt-h~WLzeD6zoni$eBd6dq22Kfm zwxr-3o(>dG43ij+Sdh|FT2r|(lFZw@bxKK08!p0tOK{#jb7^8g(Oo*nhQy$Fr~P->y3pZnVaIB z^+=C$@FdW~lY&n!l}nal*e6S^i$4OGU3`BJ8Ctd$xNC}c+~`fgHP@ShbE6Z+xP?h)m~@6oXE^1nVo!dUG>21uFYeqk zLOP=aOH%Mjxk|v{`JWVgIx9l!byW)PW1}hfbp#kkd{ z;I7G%iqVr(F?#6)?Lc|-CQB+tFEs|=lDF7c@vD;jz z(C4=OUGDLr^;5Agm4FZZdzJ#kezFMqNg34flN-yRj;8^lWEs_~ zEEW4n8Cb`Dg3mXWlVmwbmV>0FS9vP7emTjPgM3!6C`pD>vDLz<*lOX_L36I@6^4jC z3Y0a)lX}Ui*q=|xqsCevijc)f>Vdfr^opdOm|NK^O6^sdI$@!6Ko$5oJU>b;6$5-! zVHLGhHQ=Vg6Y^Z}zm~kJ1+RYSRhx?QTP^9VC9i6!7PVB1I*Lpk#iWwjx1P$@Q`vg( zuw!9;YVy3vN%g5Y1Th-*q^Cah_u?B18^CTye|#tKdwT!Z|`@v`_c;b!Lv_kgZG8K{xs}YzO>&q|GwUrHgO-ElBMDKp)U>R zb5C0TdF}E%X?M+gt%rxa^`zkr%9DmOp_i__JZX5<=A|{)XM23!4LAF2LGamUyJz0k zE5%m!x42DM`bTTas2iAD+Pj$>+M1rXB0Bxob>9dNq|TOT)7JU=MRRxtuhFsqOZ$ zo%`O{5KddV;-n!=tshRq5xtM?-}k|Wee4KuBVa4HcP(j-g66E=s3+@@$}}9~wPYm> zGE)qdX*f>n$YK>)jFGKck*#{7H;|qN z(j%v1ud}3Mf3u{cx0ZD5tCn>1Ha#6`-CKr}`RBUW(~ou7);l*HeUmj90Sj=a7;@9m zHw(x#H#yQV8cxzF>3-dJ{YDqa{My7cjr zEkEhcC2oN92T8vP^nbN61oFW?4$@yjrAkP@gY-M8R4M5!Bd&`m<)kM}dLmT!2-Q78 zb&pWpqfqMOK5o)n31wq_s>mNVX^sGQilK^pDVYz> zZv#*U^p!87NM3}|^Agu`5k@clB5V=+Mc5C0WIgvH>~%h}>nBMEaG&ez1o{Ag7*7{a zhV^w5B|tKTK!GcFfLZ;#Ku_vdcoCkq6<&n4)n*jcX0ZO=5+Pf; z&9H24GmKt@Y(+`l0Wwo=aT2$ZC@!G1zts(tD{c)KD28OEkgQaZjEAgv$%+r;L$}7r zil0jP$x4i@1V~$u=+#s<1eBwcLiSK?6Y8HD%Pap4z{m8ST)2Qn)M_^FP5qWg*Nr#kwnjzEVxro)cCxhatG zB$Q3pV)W9rJ!XB>JwVrJPCD5Lg0|Rz6S8ysn@@#EXNcrOq%D+zD`_a>m4z93p^T3f ze$XwHadIK-*fVy4&n0BHBx6mnG_Vx(6b&o`c*(#M^0aZ8TgpM(CpVU7;GV6V{3*}C zom-gb;S4+-ihz7n9|oB&1H&W}&iHv@pMjAK+L=R~rx-v6b}W?{IHsyH@IFyx3Z4&C zW#H~5mVwV?#xiV+pwED|m0gK>&-323C_~HN~fzY(?QMn+;u~ z^u|ps^^@9+OF&N@=&2Z3N2ThBUYBvxqKv${jNywu=vGH%>oPikWPQfOMehx40Qu7c zn6Ky?R$$#2D!_xSi-z`eIy*BfUMf%(8pw#ELyTFr;gIuJ! zo;-1p=6dqSMYbA9Ue3Z18qUN%*#MFmx7U-m4W!eOHMea8Xu~+ylg0Eb+I43gS_~%= z;Q{!Pd^Js z3dq1&mOJZ-#W34|Bt#=CviR-WJqrH9;*W24XT7(`lkd&KJ-IilIGhqG%)(aoX0>|} z-d4yeS*|g8vkG4POT?Qs5GdX(+=qL~dLh~JC=ey{q=PGNi1@N%i{-&?x?b>QeFEP4 zvT%g@C7gf!SM1N>vODlYE%y z;jH8(FfV1{=nhlaa2Ag42uKzcMFGA%xDtGR7i_&eZuGNNP!{ekkz`fY;_*8NS7o&X z4KdWLi%~RUS$GCj36$>!2k7jsGK=oxLt8gDRcBqh#N@5cDp-;U5U;R;G#gZB6)maI zRg2ouHCK@4it4OYOO}G<#3d8GwV?C10VQ$qftKtoOCI)GvN491?EOo^UOSXU?r+ng zfZwnb&Wf|GOE($q*|~t{W@CF_CrL%dWwf3|bs9Ye4$ z-M6!p>;|&&{z!o2{UAAeh+o06F9ox)KZJn(k0B)>xw&fzQA)D=FNL#(Y;66K>>HQD z{sFW-(!Der=b6&%8EriIWl*Z9s64wk+%Tj(``%4(ssI#NrvSnep+t!gHwu*721K$0 zFUl2_fbXzW0o*nu2GB6nPUmLTfcF4g>?l@^-BJn0+xoS@D8=)I2Z03dP06>)aAQQ$a&)~-zDeZc$9Ontek^oLm_>7W7b_yC+@NYBBUry(2ff~Du+93to7xJb{zv0%@^>ppu9Uhy?#<9)P- zY?QG;*|))mjAh#ZV(aAQVC&@OT()f9;9Rnvo6~XG>ipas^xOgRhC5Ek*N^)mg7AIt zxq$Ejz#ZhdgETlugM&0Ua{4TTdl2NmgZy`p|B`0Uiwj3N$WJGga)JJ9L4VJ&@9%Ph zHrU+}-A$$3IXJ5XtUuok^A+8Z4A4Et0Nry8Sn-}?fbL!e=#FH-sw?rE19ZPKK=&)l zpxvh!{8qddUzjs$eRj9P9OGk!d4)N-kKF~(NzhHO-($JJ^*y#kUzqds14nFyIghTN zoD={JBkw58`RhY4KZCdM3{_6mi!jI1ol~DRv!vn<59##e^w|jaQgcqe_|$VgD76ph zsK=A@9?aw(D(lVp=ZZIrJUKst25%0o=2hB*D>Nn___iR=M|ylYgVrz4^MicfVLs9j zpt1qt21qhMG698~xgYMc5I0ENAaHNX3qh%g!-6DJLK;d)ri5flNTx*Lb^{HiL@yvr!^z>CW&3-Y!#TgLMu?|X;T$}z3g_T`hj7k)`%!Y+ zelKtz*$+=0&$nDnfc9q$ffeqGTmXR-(j>5;sa#qB(EwFSt3HGjBaY zv=Yt1I~viP6QDmzIzbYwM04;otdcZTl7>nuTSfY-NPiV^tAGnD7wAWb`m0EP73r_a zu~ovpIwz;{Nr31xNP_;VoHmuPu91cqX^2tT>YS$@d!$=6X{ZG*+*=_^twQNtInEG) zXLWX1%FN%i|DtOh$PCY~%fY#>9`N<<27t5NvK^rXVCis+9pAvR*k`oqJHTSc`Nv`( z40p^e_C5q}TE0o2ZpXLk(utdHe`xvP%UySHNszZ?*!~GJE~DA~bcj+(%FD|GMI|X1rIHkB#hju5MJ8a+1`Pp3e%hUSa=?-s~_EZyY z0$jhRmT(Dh^PW1w>j_5azEZ%}X4Ts6@C*{{sH^A+@G5#59G`-Ir7b@Byvtr@$M*%w z>_^wR_LST43HCDk#MP4l-gw|Ocn<={0>1lzlARB1$_zsUV16L^2;i@@4U>kj{i*{u z?TG?qho#bv@?rZWARn>gGv^UIK7}5!;h4cl$I_WEb-;%a^!W|mae2oS*J2j{|sJX%h)-|ZJOw$?g^_s2#AJ^Oo zFrt|NutGBhV3cI`60Fpq^@F6RN;4CPj&*Vma&dCGRD)b z+k6%HuiFN&P>0d$OZaqMEl`3)Dc51`9@k;*8VF~4#AW^ZWX>%5F4r1ax*laRiEanF zk+slc1WJg$lIW#Gzn|zW3>S4XvRnh!>k0$bC}=>7Q3L9!B7Cl~rlpQmn(y-H*g^AX zfK_Hcz}L;=JkVpUJ@0_tV*T8vVbiU50VQa~Sj{CEvZA&nB(u$mR_5AJbI7(XxdmhF z7iqcga!B(BtxIkVX)jHs?2c{V`!U@w^`ZRp(qZC%D8=QX`;dQ9x}4;` zgE4^lb<)v2m~NIXrE;sKS1G?yYS_~i=xBGClFn7q~) zYd-O7^&-C!QnbGx(#@J5#$ihKROx0-_wiZ-^53Nt`Iz6RiHz48G1X1PbhD=0#QjN_ zZkmKC%C$6O{?^Hu#`7CBsgvhI9^40=s95*?R?3_px+Gr08-R9 z98$D9Pf0_UFm^ZiCtoVknwCPI<%+cYN3$_WuB2M0(9=>$^Obajk}gov zjY_&-NslY3ww+R5N%NI-gpw{$(v3>GUrB2qO@n$LSMu8SiXJ7+SJDwmxqYq%O4?FM^Obajk}govjY_&-NslY3wu9n_lIAPv2qj&hq#KoVzmgtTQf)`2 zyprZC=`cuhtm~3TDES3Sx=~5@E9r41t?exOQLam*>+_-i*dCs|S4nG>6gD12ZxK&> z3Hvqhvsl>wm`9|;`ipe^Ad$}XivGG@N%umE@-<4H4H5jgLj`?rki@&q zd%#CkbZ@|Ochf^h#4gxCQIuu{Oh|!fNMaH|K;10KCfQ`O8+JE=1PCD_M0yXM&^w`n z)L=tFUPM%EXl$>q4LcSr-*aZp-I8pA-}nEL-#yQrbI#12K4;3kEBh(ND8>xNa>i=L zTE;p?fv*`#|BTg)wTyL)Fe8;7V-#bC55C{=gUWJtSNkCGYuR1rgTxohI9wkjeiXYi zfaE5mc$PC(GuATJF$(bpMK$|p zjAG1SEN84{tYxfY6f4<3V-#ZsV>x3rV=ZGHBR)l_($5&hn88@iSj||=SjULZ7b^dZ zQH&Xk<&4#gwTyL)Vh#IejAG1SEN84{tYxfY#HSP0^BJQUGZ@Pms~Kw<>lpEYMdhC{ ziZO$+oUxj*ma&czpKDb98KW387|R)}8EYBq81bn`<)1N%F@v$3v6``#v5rw}WdDp& zj2VpOjMa>_jCG9oxTJbMV-#ZsV>x3rV=ZGHqu9*;8KW387|R)}8EYBq7{wO$<s+ z!C1~%%~;D=$0)Y4f5s@r490TCY9EyS3%l!lQ1&m|RCrN9*{`rWgRz{knz7agNxzQW zqDJ{Al>G~16!Qs*pTStpd_v+^GuHZ`44>U%JBJUH;WI`tW-yjBRx{Qz)-j45?4L1; zF@v$3v6``#5g#8_&t;5a%wQ~MtY)lbtYZ|r*gsM$fV;!T|t;V|!I_~H3 z`ZSjX5Qk;7q}_=YCu zV=poWomK8Id_g%Llkhu5lqE#;mNZt<6iL%1&5(4zq=zJ}mGm7+KajLe(w`+28in?_ zq)$kiC266gqa|G<>2666N%}uYzX1)!3SQjPA)pjaGXv39l3oW&-+`ttnJX;Tc4WPm zb!+y(?8mZmv!Bggm;GV(XW4&d56j8Usma-&^KQY{_bVNI{ z9eIu-$3(|`$8yJ7$5zJ^g(C|q3bz-2S@?b7x{-TF9v^vTHD&a=*so&Rn3&pT2ftr-@HYoHTLC#M+7PO}sEM@tMb;$$VzqGwmjIoYZsDQ($qpvQOop%Hfp-m7^b28)OnYQn*z`fuw@t5|{`>S^GiJ>AXGYvi=gfUGKbiUKOyjKUXLX-t zn-w{G@a%VIi#fN>xpz+Toau8;%z10hCv%eLX3e$FoiKOy+=X-hp4)w1^}Lhw?wDUX zzk2>F^WU5Q)BNBCH!K*sz`bC`g6#`_Ss3JudoD~^Sg>%{!j~4F zU3kT!#6=~GK3{a>V*BFOORARqwZyzMeA&ijKQ2pIUbOtH<=t2OvEpoX$CVGQj9)o? zWzotdE9+L?xoXI&(W|De+OX<_RadX>z54OhxvMKy&slwX^^dDtthr&${cEgi)~(sM z=IolE)?Byt!L^UC&09NZ?Ygyx*S1&}y>8yRlj|<7Yro#Se&+gj)`xAld&9sDRU2N~ z&|+iXjh2n$HXh&j%f`N&?3?CqI}_6P4gIP~D8gYys89DMcQI|n~G`29h{p=O8L9_o0g*P%xbnGZP+ zl^v=&^y#6H!&e>dez@ZBTZbIbnhVAV!7!GajR&Dud=tt z_tdWzUBoq_E2MXe>+y~F8$@@}QS^k?z0kT}e!snwct~_cPk6iNgD<=HMbG#!d_>_} z?y;hWNQ8D0zJ8tpAL;n6`{VHS1bmpGVG)msT#QF;QfQ$?!P^Uv8f&GR1U}C1%3+Z1~zK>|!5$9)Zsn;PX{6TD*oY zxt|ha#2aF)I4j19cM!^ZV!U`?l#BD?Y4IUK{8&s9Um(=~iD$((2=!YrLtH?pKOoc} z#a!_dz8n9uSRgK9_vJTCuKy6L#U-&u{3SMvzr_~ukAT6a9Th=Ztq9eQiE!;j(L#G! zwA4cmaj$Kn?4X6;t| zchYXtx`N)Lb=JCTcW6DdJGGwL-P*lcH|;*S?#JB&pbz5zA+0z5dM?rHmv`U~g1{!0vENz^Yt7l1QoWC9>PP-_g9ir&z4@FTK`D#W-wQM28#i%0COOm#Wru*xnN&lnn zYjJOp_ZjyR-zKG>NzMi9}k2&KV)A_QOR>sQ6<_5PFts@zQj=vlsXvdtsJxmwb@`Tl4t)Q3logDUCm;UD8Z z{!yY&K1!)jb=xiPA0J2|jFEJKq}7sc8#wn$>}^SUe-impnu>pa(mqIiIj5!0$$_MK zYqIi7I_mzZWO|AUt;?_-*9eg~Y!7JqFw!3~>>%#V!(IR#IqX%?-#eWKeR|kipi_pC zUsWqq%;!sv3Uj->SGD408Rpx=D98R7whF$Q4<~xna0(%2IOV{w;qN2N5yL+Q9Vz*f zC0#I_VzOS|KPTx6l71xV4>FvHCn&VePkaHtJD;RfsI;7YlIp{-;RmnRpQ||P=_*#g zcX}66mEIqpr1+@RJ!GO-sdOdEd!;|v^!m+u{F@G;VcZUfQVg38`Eck@ccG86P^vdt zC_cw6IbEsk6IJn4^bbohI7+i9n>1DFC|?V5DTFPO9?qo_zb&6Q_vVwPDkD{U8}>-P zy{NBL@l~%CIg-L@Bk8S@DyhL)6op#ttOE7z!F=ykpOfxdg%CElehH|l^cDT6`=S`^ z%Z;Y^?;O1j_dTz#0c|&i;&8L1isKyfSDY?=dK^h-jw4^Hhfy(HCi%+OD`ljk{3_0c zGK!Bc=YjDQX3Y2(`}^~ienaZ(S3ODJ{JV+TmXLRnPK$qHlbBL-yr2eLrS0wHig0rf(`5`fcnf4f!8D`~8!8 z394|E&d$-rPw6RY=u2tdF_p%Y#nY&~R4%F9P-U7wgL0;D2E}~G3>sAx-`6VmsQZ7+ zLS)?gEvS;}I`@r0KV~Pt8)x>%{qWgT;<>YzW(u)&OI(gV=03HJbX4u#bBNk9x|1zYf1pW)L^RjyJ%zZVsLMKn<|3TY~n1t^qc7ThM6O^9ESs?Li-b zO>Yp7;uo0=u+6UrO+pw3kqo123X{sKr><88(?jB0kz? ztq}>JI}k5T>=y%ZzfaQV5HC#}kn|8{3kGpe(w7iB{OUO73~ z-o~5(zln#fMooN%c>{h+T++`mcQA;rks1T+d<*DzA_qF(gBoDnTS0%vEW`klu>e%l z9H2&RBxtDS0*%y)K$~l$KwD`gpl!47WC(nRt34C`v(_4VtXY1x?ZBgFdEJfo5xqKy$Pupn2Ld(0pwLs9jqL z>d;n$7HVrjM{4Uq-P%UbB5gBhv9=X-lvV@!thNJmina?+oGR&bZ4WrpB%Pt{1Aitc zN3!q1|mq3qd$3bhgS3%EeClSJ%pvZsi6zDna zG&o;rXK??eq~Bm3q=|1O{a$+u{O=_FSv!aOUobl|h>P0$pub{hA%)n7`_DUX!siR7Q?row;H|!z0L3go^re4C){_I^bW%>;M{5W6`U@T z-eve5oUWkw9X7)y(5DQ4ftn2efMysp%^=JMBj^YNJ_Ii^4WXJQ@(tm*&y&<?4J~nBD5=xX8uuG z2lSxfVbH^dXwV~u7|^4JIM7-{f6!xw1kmRVkAl8n7zp~JAsO^#!(*Vw4QZgS7zTm9 zY8V1~!Y~x{4a0EIvxX-@&l^lg`-hU&8O-2(BO*K9Z znr3_k^l9T{(22%pL7y>B1)XG^4m#O56SUGe8+3+oE@CoM(%HuO;LHNm#9U()?&nCl z%(w{mYm7@kw-}d!ZZ)m|-DX?~T4P)d+AL@-=v6`ML2n4!2--1dGw4l0TS0FLssZg5 zv;(wz&@RyXg7$#+4%!FWC+IoQ{y_&p(}E6zrUxAb9Tap7G%x4{(EOm6Ky5+CK?{Oj z1+@pA1a$8t_eO5x;FSD&~?Ed zgB}R}6!eAQ&q2=we*yY_@Ry(;1b+=$7yK>g$HCu$ei{4&=vTo%f&LWy3ur{hub|CB zeg|z8atZXVkiS5ChWrECJ47>Rq7SG+^bIkBJ{%GZ8Wj=>niUcbnimoYnjg{})D_Ya z)E&|qbaY5t(9)202w{9kd)${vIx*yG+&>d?E$G~k>p>TW+z7fPq$B9Ekefl*hujLf zIiwTlmXO;)cZ75S-H9J`LwgCi8}t}{84Y<7(gXDEkY1plhTI4GRmcONzl1yldNHIA z=x-qpgZ>^84f3P7(9bAa9&HWIX3m<#m5up-cyuu-4`!%9H2!p4B+hK&Oq88#kt zbl3#YlCY;i%fp@ltqhwCIxFm1&;?;rL94>1gI0&l1l<}o8+2FLT+rQN^Fa@URe{!q zEdo6jwgmL0uw|gf!&ZR47Pb=fY}jhh_rlhKz8|(8^pmiSpkIY;2E7or6*Mfo1~fc; z2WUk2F3{V<_ki9Jz7MoZ_;a8=!w-V?3O|fI>=S+z_c7teKx4yS0PP?C66k>N7)xfzA#;2RbkOUC^rV_d&l2KM(p{ z_(z~Whkp$EYxt+2e}#VzDk8oBZ58n)XxoUdL9dGV7WCSP??5|7`~Z4O#805NNBjbM zXT-0deIkAbjf%Jg8Xxf&XhOt4pve)M5&c+%5%lqhV9?4$dy!b*q~8Ty2Yat2ET~SP{{^QdR!NET6`s-( ztEKcCp%-8WwibOg`hCzlwJxCdXq`as(CAk}lQfb(uF-FYR)DsLz0nPE*#dektO#0j z{s#1B@dxN_;z~m|SYaoETYy#s_X2$-xEbi!;2ucx2VwN9pC5*G0qq&y3G~76`#^h# zx5f%?diY(Sx!_M0cF7qXPQM6R8r}tKxicbL!{Xc@*$uhyyreHjK7hkmuYtc%yodXR z;?2m1K;Mq+1Nu(n!=P_KbG5jtSvRp(+|eu=^v-56$d`MYwHE6|KXBHISa3FoM{vJE zB;x*<_^nxg(2LFDK>ui#04kb43TkLR5HzTHGH6J1{K}+=Xr2bztob0&7R~PiZPgs# zxD!Dwx`}x0l~zMQPqZ2e`dX{jqQCa0q;Ir(68EpS8ZMsD%37Q7OQG}Hw8n3Rt^%E{ z-Ov`lf2v*A_890jZ65~h(6$fgO>Mj3_d#z1XO7mn?UPu;y#tzav^yc4qjiOJkM;rX z_h@gnZ4LT1H1}xlw6%ur(cXjR9_@{`Ik^82ntQbil70rwz1n}FxmWuiH1}#>L36M6 z4Z_*0eFFV`+Ha8V(=I}DpZ0Ux`#}G|)AwnALUW(?H#GNY;)-sl4L4lzFldJ>p2T|c zO;^ybk=}AeAJE$%J*ssF=csn)6|F(LLi4D04>XTzcU*BF?t4P>sCF+jYqcmyYqh@6 ztkrs7@g!)!E1qdltHmOOS}h)$wb}q^9@A2wc}z=%^q7_o=`n3Eq{p(Fm$Vq+ zyrPYU<||q$o`|(=XuhJALGu;Ojioq0lhiFwHREu+*^Gu-kCZ@S@?Y zq0aE7;WvZ97;bE1ywezKOflvd#~LRamm7B(j~LGyzcT(~j0ox&bZ<~}&?7;qK~DwQ zf{KGC1uY0#6SOm^Ht0V==Yl>A`XcB;&~HJ8;AX+s26qYW72G>GJ~%n}iQv58k-;Uw zPi*t_T9M3tE^LEaa zxi{oS=O*O-nQOF;wC=JVus)WTnU|MWnl~kHbKXmN=kh+x`)}Tbyi0k8{Eqo|<@d}V zod0BgR{qHR()&=>Fn<#RH2oi=D+Yix(AtQ+%;ljEWoeYcl@aF6UNUTzhwN& zvv1Cwr>+;#Gh$;Fe$ zP5yLp^U8LW*H_+Jc~@nx%Knu}m6pnhmD4KcRW7YuQ@N#bcjckVmn&bdy!34Nl=f3@ zo^tn;2c|?%889V%O4*btQ|3-tJ*8&KdsF^9<%X$uPVF@{Zfe@p@~JbX?w)#N>N`{G zrhYN?tEsK0b((hnw5Vyrrj3|(WSW?M*!t`gS&z`<$`u^$X zr++^EyXhTgbeS=HhGm9p#)KKK&3JppXET1B(Pw7*%qM2n%zSU=7c;+`*?QL1vmTfg zJu6|>W3z_M`fS!WvwoU&&+PkWm(5-j zM$ECzDW3DpoHcW{&DlGrcFu)4zs=F+M$Wx@ZpXQ|&+Rt%fw}Q>SIylvcgNg=bC1t` zdv5kT=e)9cljgOUf7Sfd`NQUqn4dS_Ie+2&+WBA4zjDF-3lbKTEts_6+XaTIh^m{b z9;~ugl~zrtnqKu>)$>*7tG=$fQ1x3?+lALIymMjSg{cdNEwn5=yztY7-z^l2!WQ*i z^u(f(ixw~1yXg3$GmG9|)OGRwi=!4ly7-C3Qx?x#ymax-#RnFjTKwtaKNlA*d3wpz zB?p$AT=LeE&zJnNq;P5Z(pgK_E#1EK=+e_m-(C9o(*G^}ZE4A}3CpG~o4;(uvd@+c zSiWfa=H+{qzr6gzD?VJYy1J%%U-i-Is$O+))hnysTqRbAt!}mY zj@8{(4_KYD+PS)P_1@J-R=>QuZuJ+d|6U!krt_M6)(luPXpMQz^fmL>EL-!!nv-ij zUGw!C*Oskauy*;{y=%W;``cQv?v8c$uA8`S+PeR)yRfeH z`q=e}>(kelu776zE9+lhf8&Nu8~Sf3-B7V%%7*P54sQ5+L&(NK8=u^`Y2(g~2R7Di z{CZ>8P4{kkX4CXdTQ}|5ba>OJn=WkXw)uh0m78a6PS`ShOXimREzT_ywoKVFXUozp zd$t_ka(c_TEgx;UuqAzK&eoAz$83Fi>x!)#x9-^b+13kNFK!jv?%Vd*w&C0Iwv}v~ zy6xz;d}4n%8UUYQCxYvnFEuecK0Ye|&q^cK7!6+dtUeVMo^; z{dVN-7_;N)9aTG4>^QgM^Bp(tylZFwof$iK>^!{l+|JK;ezWtpo!PtGyI$Y*&aSU_ z{jy8j9lrbK-9vWg>>jy$$L>SBU)-(jiQLn6&qI4s_B_64#GcYU6ZdS}^VXgZ_gvU> z^WH9dAKYu*`_JCUeb?-}bKise2J9QW&$Q3F&$VybzM6dp_r0*MZr_jl{@mAQ{|);) z@9(+4@BZZdQ}@r`e`^1^{h#jtdjF66Z+!0l=i;AR^4yl^9y$VWZJ z^Mf}XeCS}@!Q_Lv2b~AU9(?`a{|^3f@ajWd4n-dtawzxEq(d_gy>RICq4y7cb?C=K ze;&HyaPPzMhX)^a9iDmkug00*J zw(ym(%G=|*8mBI3PUxNgP$ZMZt&>Wu4lTzBB= zg6jdS`96rNFIHNkMHEK-D6FtXVZ}EJYphWs9#?-{18^nadIZ;_xDs&<#Fd0A85d5l zVRbbM>%UQ0UyZ_fjVPSJ7>ae&CvZN)ij`3--bA(HB*j?q4D9YoSl7?unu2RS<`@fM zPcIkCFq2pzHo_X-gljXdZDOm~g%cWk#U8Bd?!^l49`PKm1E2?ihj1MReO}b!?8fur zCGny-j@8{)aJ`D_q&NXvW-DJ{uJR>jDqq9K`4;QE-{DNh53qKA!g-Egu;TkG?4IAnpE%L+H%@d24Xb~e zrUhw6Ekp~3Jrt@%XyIBjEmCWtHP>3fK5C=2)~?XnYFBFQw5wn(U87yCU8h~E-Jo5s zb%5=3lh#qY9cMSX;OxeoxVmb0;Vj49ILpxu=Qw(3y>Q*fXE+|h8IHa31>J`a7yDbTxmF=kq$ZtI2iPCoX{AGYdB76JcUylW}M>~fh$YP z)Uq`T&R>*h6L9ikvNlPp#Puw$DY&NMnyq0@h`H8W?Flgt*L++Ha8==2h-(q9#kiJe zRdJSh+PT?fVf3#WJXpGue*O9y^iyN^wmml3&Gcv`*>1hTYe&`#P~p@^4`5z<3kmEsVD@b{2c2{vC{W zGInL`4y5OI7w4p2Pv+mtct7KVtoNY!Tl`GpWoPOkhlw`m8-uW4MEMqkS%|_s z&Ywa?C!?FOm~kv)Ib#LmM8-*sm5fsur!mf8oW(eYaUSCW#)XWF8J99HXRKyi#khuX z9gy;2o#-p`VIArf<-f>$f?yL=!<=9zkr|K!Y?_l?xtk<3KUdFzfif6nnWO)+vllXZlTB($$GNv;QW_+B(8^->IX){#)<8Yr~KE9tX z`A;zaDNff@{2cU{GCmosm!Vb3=Z=6Ll}8rKvsj+R@@(egESwBKoB6rS&t-lt^Yb{q zHby&RA)}Mg%~;Ghnz58|EQddq!yn7(D&u@9*H+5(l(V~n{Y_;4MCMOo_at^#vb$2- zAk$OH{3*J2_q$TV*)AIh?)hZ!bT0ulBZ-?`Qsg=I>|z0S@;7hkJm-JH-4$ z%s<5ZBaF3-&!b$Zoj=d@=6UWPUgYw68GMMba;EfN;rjF%=2 z{D$#+#-AB~WBilxZ;ppBsOJlV>i2>e!x)<}wqm@3@hZma7&|cD!q}PdPR4r}dote7 z*qbqmF_tmjp!)qp#Ew%+D=m zf1@F%a7P<{lI?1=LG{a}%r9krDfrahN)4+29?SBvEFa7Au`DlRc^S*gm|xEPa^{z_ zzjBsWu)Koh6)dk{`9zjaWcfsvPh|NdmQP~&B$iKNc_qs$SzgKfDa@b3{3+~j3d^T~ zPx&+re1Mq2?ir9%e>8*nvp9ce8C3r;huw47J&)b<*u8+ucOm0q#Dl_L%JEss<+Pmn z)y%JE{wn6LF{u81jY0MAYdHLM%wNa+b}q-Io>;&zmxTLb2|2N`u4Kkey->H4ef5H=O1AA0d^l^ z_aSy4VfPXEr{@8szgmN`qn>Ack@025R~S#gKRxF)4(BzF$D16_x0(Mo^Xu4MXHfRm zC+z-&-Jh}hGj?C#dh$K@KR+TIs#iZ6)I8{CcK^)oi||kJ`HlI%vHw5dpZxt{=qu%a zvinbV|IOhGqpGh4#vr5W_d<*++%O=86J}KX^HnUrhVeS1s*g88PI@;PRXlHD`JKi$ z9t9icO%&b(ebT#!-QC&Uo!vdz-ILu98dbUUWsCxn|0v^noPZRfAM;}w<5?bW{0t`{ z1x~Ce{Q+=Oc@HptCHapq{}JXt0zTE_M~vS~c_N3G#Cl1_t4$PM3iDH$pUV8l`FX>D z6u)8ooF~}*1l;ueCpi2O>@Szm&iPfy=`Tcnl71mS&&hlz^PS9hGvCd8H_DOH;bwU; z%ZpiF%<^KEkLKr=GLB^|orDLLT+p{$9e1_$dWH>=M6{PelS-%qTgt~Z^`BRub#i-iPROU}({xs%KXZ{T4 z&tU#6PRAU^c|aI^heia3&dOV7;gmDbxIL7ge z6M|Ixc$)DU#>tG&GEQZj4y5N!Xa6(VJ(JzD**%-xbJ;zY-SgQ!pWRjLu44Bhb}wT0 z61XY7%NSQMu4KKHthbuotJ%Gl_0}_PWZcYpn^|uwySK8thTS#n)uEmZk8GP*)l{uMEf zVk}`C!#Iv{JmUn$*`X?b<}%I)QohU&RrylI?kaXKV)r7rDIXSvs(e_&{3Xm^!u)0Y zoE3~K8CNr|Wn9nx*Ry*gyEn3XGrKo)_?wx(mHAtlzm@ql%&%d74dO%nVhzi8uzUy0 zcd&d1%a3vXzQFhr<8j7U8BenQDaO-`XBf{iz6E{C*SFYxj@{?j{Vu!TW%v8+exKdv z*?pef-!gv3_yglljK47c%Km<3_wVffo!yt%eTm(FvHLG}|HJNo*sX487#qv`uKh5&fEI-Zi(=0#3@-r+y!}2pMKg;s7EI-Tgvn+p$4%kWOpRHo3pz)+?3Ad5vqN)WPVHLw`6{6=C@{kYv#8F zpPt)}u|4C}jCV73W9-4$i}60j2N)k>?8EplV>IIs#-WVE8J}b{F`5}O87+)Cj8?{c z#sVPq3k966rGaB7RN{^LH@rV%)>HkMTLi zgN%n6k1`%(e1Y*L#^a2yGM;2S#dwk7sg*1e`mbJ_!r|pj9R3shepO=#!$v^Amw{_r0RDf*&WI5=Im|` zw`>oQs@=C_eoN-JWPWSrw`Tus+1-}i?bzLp{k3C%?U~=6`R$p1HTa00xHeL?!|NGu zWPV4+n;CCq?8JCGV;9D|81H86#@K_g7vp`54=_H&*oX09#%RWvNY(#58~OQ2itkj$ zxs3A}moP44T*26*naclX8Q*36mhsx=N`5nAesi^Mn%`Wlr@G*#=Z<3cIF^rN_jq=X zXZL(|&u4cPyQ|o}k=+~Fy_wyc*?pAVN7;Rh-N)E{iruH!eVW~;*?orHXW0E0r>k8H zmCp8z9T|HtKFs(i;}FJ7MhD{<#>tFx8CNiFX57d40^@1M_Zh!n{E6`&#>kc&PsW=W z?`C|6u|H!Pqlqz}aTMdzj58URFn-7QPfJza|Fl%)-Kmv&{(X%7850;yj3XJJW}MA9 zx0OTA`{%NIKI6xXe=#<1t)6o&<9)4FJ$rz05c5Yej&Dut8hE3a-SZh&Gah9;&3Jtq z)owbrQR`|Q+o*Moo7sIcyKiOpt?YiFjp~OUV(bH?eyk76qY*B-quZ!;j5vNyf7a{Y zM(vaKXZ-}`Con&ujas+=whfnaTh;$u4Xn|E^A>6s^A>BJ^J}z|1vQ#xuhE+0BKOPo zNydwLHIPpOPBgY~j}02?F2gl8=weu=n50fxbUjdtPb3geiG zQIQw(UJL*J**9@b4qIRRWB7@pi{V?#z6aKZAD!|u?rXy{r}l$hNW{fFLqxpjrs0}{YbmZ(xVGThHEnRj`7whdUIzXL*BiLr!}TGq z|Kj=z*N?b!4d0=E1+Ki{R-$;K)(X|70|DMeg*U^pkD#~3h16doc1Fwb-+(> z{SVg#To-ZujcWsBAxOi`z#w2m1#~Zo<_8 z*DbidX>)$egV4Vp*UiwovDwAE*fzbY(wdzgW5)e)U@T;@Z7wbR3HL3V=Per0X3C=L zo1Z9(mpE@xe48zcjzjnE=AH8gwArv^vXl{$Y{!zS=9HFRRg0PrUb;X0(!!4+{}{3_ zpx?a3iK6B$<}GU7V(`*-xNnF10SK=>?%TJpO*`J~jpdzMbk2Xb#l^g}tw=J6!32Y8bL;4;A zeuH#;1HI$TdR5Jadv)83c?a8e&OeOn7hJ#M`W@FLT<*XPn(6AQ%UmMP zUTk$b>;)FPyE|)&1Qk$2TVt zBTTW@Ot;lxH#xd$^MWngSnfWnJ^C;Uu zvopUtGvS~sg#!+Nuh*XZ8sM;@1#-JKk-l$ZCAaEAso!#! zpaZvXIB3IWo3#{vNojz^hF;KxXDRhW2l}`EHpd9FO~w;yJ_3sUJt77aU0n|m(^JIs z5-}*V`$WwBBIW^zNDO&5D0G8HH>h;$B~)ztnOzod zOS2T13v*GDGN;lCt@a^itJ~9Ks}!Latac|_=EaFg;u{7lLz@Whad9?2B*^n1+Gv|1p;Zc?BKw(Hhy?{_#ifnFlXnOx7WG_Wk z8=`xlv=St{N2hkwbf-_j^BPNMSVC@8d9C<>~>(bJuoYawGv zZ<_V8jzUS(RlIqSR$|Z0g?VHxm5HK~u#9&5DT_gN#|W3jS!~H7z9)LJ(?ExYGL&W+ zSyTQV{ahY@qMzC6v|5}gFx66W(J~uIL_ZrE5X!=9HXxB6t4a1L_3DRL(`9Pt+ml`d zDLqypICU0H!P{CB?=clO;a;PE$t@eTD(caEh_XxwyS>k!Rbm0+k z1%>VsZ%o0F5|teer`OiYo=GhFDSH53S1duFo=dY&4poSa!Jp4*@1b3QXQH%N&?*k8oyToLHV(y z=`4#<WYFOY6m0~T~W^}&3VRaWuZ8YWzDwCyooZ`fw?kq+F@>i}W zOtBVPY*u?cHRLJV{+^o{^f<7eoXYsNWYzQNO-g|3*f1Rf%&uJInqH7z-x!Gp7P+Zl zI5264#fiOPwguKrUSGJT%dUC)opXbrO#`iI*?)Mx3X>8+*Q3(2mJMm{|R z>S}%BK#KsM-iHBQ;EEcLV(a3O@WA&fi)@*5LVzMa6o~DexbzM z9AH70HlPNQj;!89su5KiC>kbwji`Gt^FWV6vwecAp- z{AHMic2DbfapGha5PS{=o*;2^eOReV`}QCbb$1x6#D;2HU7oW1$94 zn{SYTH3Ej$beHJ~v}v_QLvA!}egQYC)o8eZ6X+LcU=_a*X$~okOSVCknU86RP0lRU zg0WOcv$$z-)1}N_-03!{llJ>`8#PWYBuF!q))&E!wwFZPY-tv=Gc#9T25N-u7c*LA zGdGwB1mODkQoES-eCgJ;^7^Qy1PcM4d(XlIIBv7m?rIRxzyhC#VjE1Yt0ZL0)vx;b z(uCAM6cmNk-f->{8;I}clP6}ESB$e+XzwVxLAC}KcpoC-txm2eK4sXD>FWb~XEtn1 z@N5L%m6Qyx1}cG^D)y_laL^+l+s9u|T_GV0iNOZ9Uyl1IdP3slrD3O>7Wy00@2OAe z0>#TGT#f*$60PRc^K|)0adGiO{&n0~UjmvRYO#Mn9s$;~XmMbIXhlX7L03FVHO&=Ta^?CdV z)RYDypTK%xCn?{O>`cqAzrI16XaOZ&-;HVLsq+Rf1WSVrO1vqt&qEqkKV(rurq>6= zzFYV{gCFffVP6*eQ^;X*$o*j1{=7@&-bHO+O$1s`&rizBq>0vSOJ+$Xj(W(pM30c| zS;c|3-SBL`NZ=5KqcGZ@)!$JsNREl69$WRm^_Y5!F>T_Uz#Xp;Vg%P0O>ocz3xC*3 z%CQV`TW#2i#~OQ*1AX8?OM!zo|57a@i>z2S#&Ch|M{XOL3y}dx$|yu$KZigo>DWEa zFDj%;W^<@5Gr15AWsfAqY^9ST1o|)yCpUKwhZ+~H(o<#i?3wsDx{GwDIn%-$Sb`!i z;?eiOn$^RQZZ+NIZ31@JR%R>4!);1*t@T(%F^dFnDCzW8f>-| zS<*`iaf|_lCeo!_BzO;RA#W4ByOW3y)T9!Zga2tI-b?g)aQTMi80*pttOH4ob&J;7dBx{qzvo zZ;;SaL{22mV;vwbsCAG+0#`(DyNCY-Py6$UIqV!+%~dAVtIpVm!BGrknF~iN=*V0a z+01BkZn=*x`di${KY6qX8%WfNsTwZNGs%;aY6m@f1mfi_I69UnS?EvVD0|S5u}LLw z(Bg1d$u7E*IVW&b&n3bTBRP^r7dqxYVmjZA(^HOo(2@mU< zhGUm>_DG&_K#$|&QfIE@79-L|NyqsIkv7We&dg1BsHDl*VOJDK3SAELW(ZY9*rkSS zk4Ox)T5MUgZ|bX>&_IonLIs5`eP9Wl5kvOWcgM!XM-NI&H^n3;#SBVKjZ2CdY8nVe zLP}ynT&nPhqf??|64Hn2^+iuI6+Z@FClXsM&q5}+20JJ_(Hsj*BZ@NfEjWc%V4{;2 zgqf786pK?HT_Pv+H0Oyrt6e41I32rJLlKyEHHXQC5@Ri+;Ti+4H- zd>TIL1`e{x6GCQ8<76{&mZV~ADn^6S?_@K>xq&rl0C?|EaF2CcnZXB^t zGE{sVd7&dvhc*{F2(0f~Bj8eDWE6{QYvdF;Gm9i7uHUnX&rmEM#ZH-2cB9 z(&eJ3vhP8B5$m&tZp3HLl6XHy0Ae||I(J`*7?imHIctQSw_!p zyy5ufh>WGr+YH_c;OgqD=jl^a2No!nUaxwucNr~}L;8U~C@Rlj9dAPc&R5Iix19)HN84qBG^R2FqEb>=Nu&j#Su>W|u`d0>n*q z)nv-sFn3Wc(3>+bxDXjx&_FIC-023BNVe<71{qGt_Ek~dTR&o z85LWSC?M1w3z_5Oh18X*t_CB4)=xxQT>pV_N$IAvgkf>?Y*bAE*1&CnlILj??ygN7 zTkW0Rx2rNj{?B2^IMVI}O=%o-Lk(pBVwsL8;^ePU_SJ{>c1OU4E9D=8&PSn?RI9o-;(sT1qP_EX1tJRsT&LX*xD!HmNRW zi+(5JWGEhX!{8{NsG;&aGr=Bb&dl}1P}-$Ui0k=|&U89lE{|_leeVtAy8k4+3`cV} zG+Y|B=!rh8-i^ngZ@$UY59jUC^Tx|*nXhjB#|2jQKB$4b@#j*j)$^?WW2DR*DphXv z(vVs#LAzEjI(ml~jN9HhLRZQZy(_qks;;I_6#ETLk4rP9#HE^I1`JAiRLJ)jEL7?A zevXckO4CRxm|~L$^-D}h>TgPoPNzP`CEuZ0*?5C8 z>2Gn!F3pKGBI?hmNY#>=dW7%2DkD#$!BfzWDQ^WPhn}T2>RzdP#2b>H1sK)1hNPcGiNT>at2j0kf{!y=zD$d8#br{rn1xFgOtmyr zVK)pswLBD%jq#P<;X@VHR}*x`5UV@aQRI$`5ww(OlNm@$elawrI|@ybORE^TPp~8I za$%U>A90LI$PSz^7OFDkHV(tjvkbybPsy<$k9_2V*_GqR1Z6?y!hNFB;0_ ztO66>aYQ1Wa=lBkXm^vGGV^cv+- zK9N-UicUf-FRf#lj#Dcau&j3K;#DcC6k~8PC4!9?mMD`{bUZ7?XhiCmgEt(}xHi>3 z|01E4HN1bt)i%N9DOMVu)PiBas8UFm6H|0$OKFf)-rLfvo9Cf=E$(k|({7VqFc?Sz zz1YQTx7drIIX0P_x_^~_s2eChYc>`oz00rqg0G(Is$F8O%U4Mk>TkN5F!ezc^v9^4 z%qN?<=2FAPDyZ%|-J$1hy>_6p(RjQW-b8My7kC@yq8g#(tXF?C7IlwCEy+`Ts~#Kd z(80*_i5_-7@tT&~H(`py5AtTKVxT`$&9XthdjwP~$S#(pPR6m2E_p{X&L_H6kzZuHRGH3%`K4V^pe`wIKlA zd`U}5NHV3R_`3(D@B{D-1zA?6epc+|({8VPu7{nLYsIS;G8No%yqb7lS4!#y;Lr96 zfZpTv@qm3&HAPD*DxehMkb{3n_4z(Q)faifQtR?4N15Xo*{G5_3P#Y|0y1=I^r#$? zwM37T_6VvQse8p&e^`mdqfzNft;!sGw-u7MpbPb!%0ydfMb-IQC=7 zdX0%rPe@KOB_|~gH6^E-q7zf&qGN}e5|R?q6QUC_caBBIj*u_A^L*ZGqp4Ac+6(1> ze^_?XnxdTxxwT9AE=wLAgnZ+ZYL*Q%RuXtLu;h=@(4`7@s=*v z4{wE`?L4Y6J{&o>bt#M4j4eIRLv=s~JA7n_6$cWyOxf7OO)8 zNg66ZnkQu9rD0DW76-Q}i{PxY?xbdr+RigA-gvk>__X|=sx^JtS2k%6=*=>IH{bZ8o(hORi*;tn4sk`sMPEzfwwS za!g!W8hQ#@^-QU8@f0ug7wK`SgHa;~rXha{{kL~v;^Jxkd%md_492cp%3DDrR}#&m zX0cexJt#1E|kZK;znbfr&399;T(^?D?qpXN_hBJ0kD#C zBvbtKAmi-RxXJjFAt%=PEc!{f4XT#Qy18j4^61bP~EB#nst0)&odtykZS zZ{%r>1n1EX6qIg^B_=1Qn9|ZyG0#DJ;FTafcl4L(F)Z>_99z|LP{t7+6adUYi1?Es zo;!SK1oyPUsC(+6JoVD~?8CDfB0mB|9$0|Fr-^tfzJifSwFRpesEjrXnlvIwiyvxg zgF_BhN0w~KzKjGrS9C}ctp!$jmc^2VN{7A}?O5_~pG}`pkp~E6m8KId7$wrMbYR1G zywEAD6)>#ts>!IV6_*jiki%KPLXUmmS*1Z<`91|})mSj;=fsB-{KF3@pfEl2JLyR% zs?YhFh*c9JZ)CA+rP~>Zs2*y-xCCUPp~*Exz2->IsFd8r$Fj5lJ zOz0Zp1l`0v9ut>BW?^)qboWb5el#vg-lnA|r=+0YBsI@sNC6$yQ6Jw?aibEc$5J+} zhskF!(y%Y?lR+M_obBVuSMk_RSUr%Z$1lDlof=8IX_|i%0oBDK$FDl%5PTMy}eSvil0z zZ+vnpERux5GCIC;uP<0YDmA`hGS;GFO+%v7Ows+4WyZO%_2|k^P?LP*Ga2^sqf96u zCBY3in0DX>Hny84RdfPY$-N^cmM+Zn8AAv%&4u*2CwU$b7MAW&wI1KBL@Z%PrBMlb zDmzU-Lv?`H@DZ`O=vxi09 zgq#=RYgjxr9B9E3a~2K(WIC<#n_mK3p)TtP8`j%oTJ_~J@~e-ds&A2fBljzGwi0e9 zO(?ONg6b{5B7w7KF2o#Pmr_otB5)v3Ukk*iNHFEo`{_mn(jNjphQNM&r1%CaYwti6=e5Q@;4}iv!1^b?aVV@6h8$%Q{qJ zslIyr(4vaRAwMHV2Aqcjn?hB14=0(wLq=KZsYeZ@{Yqd^P!~cG#Bwnvwsb^XZAj7E z4Kz;SkS@+^V3m^w{3-UDb*7_=T>$x6n{U4Au&46{Z=yf$91>IrTkDmT#PyHWzN{jC_j-|FqkA&@-) zJGilL_XhOpcP?G-1L4IPH_qDVVS1*sYO2CLvZq&fnJk$ehujzCjZU9?niAu~c=%)v zZKrxF7Qa)Hg}F8QUiIx4Pj5_}jK`q{7uYYUGVH_GCVS0Nqd{ z{fu{+nEF%~nVq_6LQ@njdY{Ek?|}qgGg1zAd{V`tPv=~oby^P#AFkE=b=~IFTNm7Z zkMVBKv;7NjuqlGB0WP^-?^!^n-EsNhRsCj&S#FMDH9~$7Rd)VJp&DjxMSq0uLh8_}>i$%R>|qJdT>?5X%&VL^I3o#)SGz!a@F1@et3J8v?S*qKcIq_KqfvV^u{dSd zi_O#Ll7{RL<;Nnu5%=B&im>dXV7yUxigJJ*AzQi3K%JTHpsI%hap=*3XXE(hq#TW402WwXa#`&7AkkzFOr7Rp0!b^j$L3S!sTJBeFU8*XnrxW4@1o`m#W2}mi z-U{_*iP5eAM>K|@38_ZuVc1KUK`D_hm)0*^7t9knzAI$VQiamutEN8&ovA01WQcK} zhdWQnsQ%RBlyyU94Fp_jwR1)`B9uMOW|TJ7_DDnd(1&3xf_I zqtbC$YROx-oKa!1wSk5}WkbUsHf&s;1qY`a`!9HNSuWdn*7+%7dUR-|$L;I(E&C$?|M#*0D((74R%AalfESG znUi6E*4ODLgO$ZA2-Gh1)dX4jJr2(e?Mf8joS&1@j znBHW-B6NB}OhQU@QhFNNT&7ybOLw^WcNV-n`7L%h9ay1}=e*SEBmEwOG~yw5OsUgT z3$m2e(jU+2^hI7uu*I1WE3+0EiGIk6H@@9iTPQHg0jIviyQIWzTLy~*QX{aOj4I4r z8F4wg^+^cL5q%y~&*{QEn%b_fMgtCBNtGwY(92V?@XCzJ64iyHQ>R?vPg6HYj!)<+ zDFKp!EhtkzoN0;0LbZOL))XBZ%j@{E_~Jv#iZ2_ZZ0UM(%%6>MQU3gqJOr+EkW_vVgUef zi>d@39dm~bjq|5;)*83;1{vSx$RA@Nhl>U=2<;ZEGomA=2BsUwRA7|Z=!NO6Eu>cU z5i$_C(CMS&P{Cu%4{N&cpl)FPsGE2!o|anha|{@G=n$*A=L1R7Sflqgsl?z=-y}n& z;idtV z#0hlZgZRokRO?LAs~R5=GkFG(ROBb7b-NRji5v?$JNk_R_4^C_)i(9nB$|=XjvKyT zEz;%3-|#IFS+N9tQ(L6tI3@bpbh(hJKGG)n${T$lOMUvLp9g6XfhX?in0G>;z=tnC zTmk_OU1Z}$F8zB%Dt9Hzn?1h5^l0>R1@Z@wyuaBbr)#P}@o_|fuP$PSFdE0oTTgZ-+RC*mvo2st!+54KaZ~@p+w}D&qQ)I9T`MNquz#0w#%*%1`6!} z;;XlE#*UE(-|AB|8AhC9(x=t%vq|`65)VrqZo#l6&$xKl?1R5%DB|>Q272$jL0~S> z4^uW(Pw@j19!ETFlzCkAxe(Gq%P8c2QOVT7N4eM~haG=z7QM~l^`hS3s^_jBg06(_ zPKGGm9wpBUYTi(E>qPgUyY+}BxVWQ7OmrPDFGr4Jlv+8=(LyKQfm6v)pUzMkv6Pf} zoQ23$GFS^(8~T4}dl%R`uj}6PJBO5bbVSO0Shi(TG#%TGT-%By%Zc4cc4(QgHIXdY zlJaQnQ7H0A;x$DoBo$jtjFQx&Dd5g{2JUS-NHHnkVp1S29KgXi7Y^XyCV&GpfQxYf zb;kE1_l_^dGm{Q{ffly|q|^ER*V=o3k8>!|ZfeTs`}S+?wbx#It+m&Fe2NSQSRHRw zWm^k5$YVgQ$UgHbcn)M=IOpo&D7i|J0_<`DK0VhGRD7idumgs8QH6+2A(`ErIc|mE zT1v$;wYDcpqCrYc!zR2jcn%^64U2Gnk*8?8mMLx}vtFR@gsE&P-siP09@z97iy(N< za;N-Bj1;IOcaj?sM`A3fn#a+Tj%qw`rwY0v*OO3@p~6w^&Se(xQ!Lmf%fy}2o=T<$Qj~GTqp<9=l1eCUI11h4*lQYv;a-B$c>B>CLs0l`R4U>Qrj;IEdBCJSnc6vXj{p|oa zt7(u1m7q;%LL0vAq;Mq|D@&|R7Um~-lTp&Tt1NUQ2deUqL2ch}=78Uow+B6*t~Prp zu9$x4a-~rT5=<^mh1>W{bd1G`IqSx$IT9MO6ZK)SVtib^;F2#tfN}hhW1syjCz9dCUn@YBFtgq96j$WMM+zI$8sTy)Ql# zabuA(U9n;~G@ib<tDP15XOD72 zmfYv*%wpdp3D||v3Uju*a=CV;P_e)h#||7g&Mrc`r{nQ4 zjuGrT#C~bKDlXL$WR|RAi`=$HJx{iL7bY0D5h%2Zx-|!hgpLl}KAWFj7ll%_ z%$NwuqNTdneE}#F0@M3R1!A6>(Aq!i7E4O7VA=wD#+}hl_(@q&3z+w-3t&*+U&bZRqiCeUN$i}1>cnscaPtyR{@82@h ze8mj5pr4f#$D;S*)yxb{!{r&VZaH)kQ`K~Pl(+@gNc>{4bR z`o?s?NnSu+u2w3qT(#ln_z<~2)cu1%XF7_z1#@8S2>JbiAEJPF+EX}q?6}|BYjSEa z@37vn4qtl@m#J8|7Ai1jY4pehXK<% zfS5(sZ$4#{V8@YBn$M8uWIl@_G;g+HK|cv-+&-aX&34k5lUqBwBZR@(s49>nqOb`I zyYJw!PGc=k26+>Mxzw}rIvAMQ4_>+WQ8;0lJ_F}cBPFR)+oaWTglD=I#ZwBI3ZN_W z&#S2<2$yz2&{1@_)d|ijlf2CaIfYJhn?~@7#O~D*hA8({vZz2~o&vEPJedkTXLXdL z7R)K)610%>l)i1(78^95Xa@R)5HMpOJYK{+WHHiWwM?Ei$9#ua*E=1_Wp}EnN^=RV zp5>7_Jcf4Y)tesGQs9j|$nZJCrr7zG%>hDV%8`a}=po~dsA7tYmdD|*^TS{Uk#c7H zM`t6WEcrV_lB+OORG5FUgxyzrHhBZ0BSby@SQ zW*b!w^Tyq`zWxA)$bK2j`MD{(4#INfoPOGkRCF@N38HO~1a+NPIdlBn0=rg%1VogykG)(PQ*d5RNjoYt zA&zIeFjE?D!c@m2i>>&5mvlV6*cR^|X2+!qmGe&PV3!GJ!r4=ko3_GjFN8n_L;#rdVr2_-qQBS8$89pXW>vjWi`J zA_mAK*@}nMQM^@V0;a)yM>*+sI}n>;BKyIN_#!^5b+o`uC*|i&q7iGH6`mA4(K^Mk z4R_8nhRknmYZ{V~Hg==XH0f7}Nqg~R@+)^iiuvob-tLPdn=lhUB#C;coGQTM0=lAvU8K@s=$<*K4I;>!Y! zQssyzP~tX%CuSILQ)mf&x5$kKJHBSlb$EWtuJ21|g)fp54wIy`oE^eRiFB0IuKS`a ze&ihHcS&L7jd6_-7^y&NV=V6;Q&MgLJsU2fP8OoMd(vg_d(vg`_Z$tjnY#-G=xUZ; zASp)tp1dI9ra658m9m2J zD%u5Ue78rkdgz|LWP%vFULv+G6w|N`9S)fbk>%Vor_+@Bye>c-*KI2lSk&f^P~K@< z>g~YCMJ6e^5?z(G<+2Y`@NF(rbnU4U~0Uwe#kyv zV_Y(=&f~M>SnYPACx;X|)^%7ELY$QSEDPV9*ExiTCf@Ckly*@i7S%iCGo{{^?y89m z8>}f7zgQ4@JE^($9IO#`urz|V&f&pz7M6aa8M9Ly?>mT%GjXaFFP$Tc>8lR#MJjD0 zbpMBm7N-UKlx!h7_tJ7QZsGWRhv>LTpX3ubQ?vsqMFD24-~k4PPR84ADEm1QKDtv1 z*m@FKxozXoWBYLb1|RR(F;1+83vJU33x4$xZeAmUM--o72%n2#O_=j86EmiylM=UG ztDTc%0HDmcUs?pdy>jK+$!(q9lWb7_zM0>Uk8GvGtX?|7?WCYq%&n!xw|JF~EHo zdOPwQ4U+qutL^NJV|dq+`hnKONtV&M=7*eazr=ek#-4g=>`Ts)#u(A8w~L8cD0*6$?U6 zMug>f7VU02Hj^Keo-?;*d`4xNe5533Q;+#e)y?|aN;)J#%`}4zW#(})laxd^MvcC{ z8$pJ-zljXNE>&cBEm*3)dZKmc*uq`*aVLQ_DNdC#4m@Dw&V#`Y)6O0?8!}3NsQ7*O7X%59CK5*$7n@wfg}`^Qm_W!+`uW!U zi8i53+H3$<^UP*K@IvC3sqhgkf0d5KUpo|TByH(z$3Ew)HVa1Y%hkdv!Y9V~rU@FsE zI$nWrb;sfyB00QI>#(eL`_Vt#G^sa?Aq&_Q=-z^C!A@$okUc8E>Zrm#TF%-vHAv5? zY*sr`z5XP;JxBwhZ>V}{cp+)5dLy{f3U^~K_|4ce(3v(*Og%C&BMU1#Q@kzO#fbdd zXj~6CqVwA1#STF3LWtK|BSD|2+#GEZ$vV$hqa+!Op}iq3Uw_wX$CO;Oki?;vIo9?B zPn@W41P{c?QpoL{%c3hA|D^fke2Y6p+bTjj+3M;Mqqr^+ z3&qdrV`y%qhdr7I5bhsc2r@#ic4q91>`dzmq6)Wv+OX1|-lHh7g=~&2n)zs5zSFMX z>2ST7Zlui4=u&FLkzMZSG>eGZioc9<qr=m7S(fdDJyg7N z%><3_lMR?wu@vs&L48A#lVXTTT^O0}S<{fxZWpA3>5=H>J25wPUcj}_hfQks7Uu*? z3sW8VJBDZpJ2hj-dV&9<$wj(^w}VB5->zHgQw$S zcln60C>we3nNNgc2KJ-q)Z>xG^TboDuVp0fpc-_Ggtb_+TYsPlZ;T%?hW6)5Bs z^lJV4tX#3~tfL+03y0_DIPIzkb)3&G!jYaMx z=2J5B<;2mkaokcm@|jA7bKO%66I~iY$Dke;IJaiURU8qY4xS1F17 z3}C7xETm{+nw?-Kslz62`z2v$(vxUaWmkxvizg)$`Y}rZ3Evo#BE*k66?no4##Yq; zfA*9u5zFM_21x7g;07&5#ZE8ArLCXE$V88Y>^UTwAJ;re;|sPm&*j$A5;|DP>}Lr}+{f+S)H%$`)zwghV29DctZG?)B-}kY+te z2Ry-KDs~Uj2KB3PV{!?JI!~85tDTn3vI5f!-il|ZTx6rNN++(|EM@~OKE2raC|iYq zi42P;-Z&~psCu|4H=i9mone6EW##)UeeoWpckV~)X-nvJ+)F)N#p*)PCL)N; zXhXZNK?B-%+S}B~6|pU0wr~B$sPv8Afm6qWl@@}KE-)2qMfrAD%{I$Bs>?CjhNXE< zGKi%Z z4o%1E`HTgy!oJy<>VsR=dcOJG2^O|v#jTJg@R0GvjgoG@!ZmQ0h8YT1LJ9&nrg@uu zfXvA$3AIyRIh2awz?msM0Z6;UsHuX)wDuSWWCOg!*%*dtExQ$!a@^AAlRM2HFkR3A zuB4m}nC_f5No7}G)i0%FND1Gs;M|R$!ubx7#r8d0_tEgxrs%Nc&ny9sUdJ6q7Dhbh zTgT_lh9dbkB(r|Xn~P4$Y=6qO3<0gQb0{YwCQxGL zIzcF5okJ@}hyCy>6#C3^hId6j4o?(qt>kRss>$CiIzadM5WxOo z#{qIZ^oq|q=?&!70XoX!(*Sp>MA1=P&i8f}7VACYfGyR#P;~XIF(3HlIXlT{8!%jH zco}mfK$@`P?vZh-7(`AmGmRz*I|~W*AXk!GjO`tASt}``Ra_Cy`#N!(NyU!qzYAb6 z$rnQkE4J;cqqw=^F~?_H=XWKr3M6zVHICZ{sAGs+vz1F(Gilv2V1;2A+(e-@adlEU z%LSsf*QNToS;Xp8t~ul(wUcu48fcaql}j~j2P1qX4ck8*eJH##yTvIS_VJnafjtqjPW=& ze~M+y*+pHojZqWUEaRmqkFd74&*PDJE&` z@|Bvr_~V*UCKpQ{AJ(yO?r{Z29&Ia=^ni5-HYaCJBQ0|}#+XAGTPMxAm8Zdnc%{ld z!#%8<<<|d0+{3dY+w;(_<8gCKWYFAew~(I=$P31^lby1CuCS_7`doeah~=J#b{_W& zszG4)akiFEFJybdQtm_dA3we`+cT}_u53@RS{1tQUlzlCZXbuy#8+abaa$F{0jrTm z{9CaF2UtdvNw7_aMe-vQr`apAP`IV)5N^_w997J-mA+h^_kQ^k)_J^-;nsXyxGgX^ z9yWJx=KbUg|JIknjl~r0}?jTVLd*4xl9gn*AqaRV%8S~O{ab?oO;y} z4lRF1>J>X|=ZAn1%X90YNayRONSvHnK}2cTxuZ)9!3xQT6k>!)_)wEle5JPIfW}RV zEx?zYaXi`in8m|5>fPlTt;oFY^o17gBKRs>9%93y+)e^~AEI4bW%6DFNmHI=2~tc# zI0sGFdAi|VUZqu3*oYKse9UeP2`g1xvpS>w=(e)t<-a;XEv$okf)U_})^qGJWM2m! zIM!s5LtmYiBg})i&Fxxr%Nlxt-B4P6wCX2j*#;HvW@1uqE(sYvf#UmSw3eUP2@lv* z_Sn8mBLz#F@0z0xwY5U9%z;*1cHvW5>=7FaR|6bdoO~jDI$F$#R-9?!t55!5DM0(g zRoDQR4xJyA8b#BY6wN7{qO~NLNAK}#=^r{F0l4qT9eW;n@Ho4%1`ne9 z8e`2nb+ty&)l7MdA@lTTPj9%H#<UFdaW<7ExYHG|31Rc&6|o`)un9}lY3ZWUk+*O$A@{o9uO$=oCSB#Na{_yO`O|UX4qfrL5NP zVI=#?lJGrI2~W1e-FZKN^HQJOt#Ug%M4^DIblkO*OITDk|16M|{#2*P2RcPQ*eR0M zx5GT)3zr%z?4iIe)ZTuDj^Vfrp>_nPIwH91z793)+TAJg{!Wpf>=a3(tMs{V7uDOu z8po3Ra|#Zs5M${wXY<+Yd`Q|;h-#zAu9MkS)9>5CRyHKJ%P;Mm$|Xl07d`VKM%xlj znWnM56I_FWl@bLw#)EJ1lay|6?CR@p3(WjVYnU`9toGV9~YC zj?LIj8tOP(NiZ=F-;I@Hqz4b7Sv$)k?Eqq}3ZbTr4`-Qo?@RblRAm?xItzAd<36x(@!h6CC@z2xlGR<6uUg_4NCw#smA{Npue&ptY*3n7aJUWj3+yM0E#(S65ewFgY{)y$Z& zSkmK*v!17LHaj~|EZKNDiK|>@G%R$1!jiJFOB9w`D2D0CQkd@Y@gyfJBq`rBY&CS? zrkx!aXXj)aQA0O(?14gM;SOV~482?JtzC?^4jsFz1EcLS72GNF?xKB($VuK6nyhtW zH>D@EH%y;4Vgm>rzn{<~xc4-%dBCb zXnY@i2#1@NwFB$4U8u5VX`!*5pLZ1f(>QCTod=Zg#iHRq&DBiC|dm~|_ zeYWST+IMf>!qAr%VUjI~9Fvj~pOtC&PO09|XLzN)vVH#{-zgC2WEHLDEToT*&(CR5 zLu=m{E_>`KmJ)1f%s!^UX_c@wwy^ZJP{=ALcpHv%Q~6kz*VdMEw@gsW8BcsEV~1vc zDrLlA3PvTWLWjU?Y>6sjrv;xe?wQm^;y_!;09?0$uu<($iAv{WE5Rx13139nBQODm z3fi`X0&}A6J}D$)HpGzc)4{{7ViMCi=XS8FY}zfzl6fKnU&vbHpf2@yX^2fS%AE`! z3052~Yb;#iOH)zk;joYqnZM%hJ{693Ig-gJShGM|Ta~dL$oK=T*;Baebz+)9Z=6xI z%+Y3i=6R2wB??@d2jH?iKxgNH`?BNh1HtU%JP$082jGA_fcGX3oZuuAYaQH9Di4Rw z)8#frmVIh0JH;PcNBLzVCeQKg`D~IWd*!le_AbwY%Tb<32(#ac@Tn~O!q>7L*$dg% zvYq_iYkv=AquI7>Kk4jRCg*4eNTb>9l-Wg@yGZ|9cAvr6ZNK;PTieV=Gir}DPXOn9 zmfd~`Yy?vnI!^m|pEW#ZNSVsA&6D6b!yo(pQm$-3v1cePNP>{{Jj)Z96Z@=f>@Xx& zX>5DW9_>*3aaulSxkME&wFo>>g4JG9*nMK&M|kJ&(X8XZcgx)#pebxLj{%=%H+* zT5yh%P~=OUYLg_@czPCyhsnvta2vB+oKC#tYl{?>bSQ^-E*j(TT9d%KDwr%Ro<@b$l=femsOIMlF`SJs-iqscbHsl&n1blN>7|S z1O!n-@`oi0-rCE1Esv3g*QO1J1u*ym<%Q2FYB~oVCk&#vzf=BfgEWA8BPA?@BHKC*{>~=thDvtp)lwOn$384BV%^nh6JwYd-Jn|4{_NJP<){85 zYpY)rP|wKRQh!fpzs)n6K2lH9#Hu%-$k17Py5ZzXDBG|n7-cn6{lbzJ4ih=qn0hXn zPBR6#GV){`$>1yUP8+wZ0Yb67dbGlCed=qk3#v@61*3h|N^jo*;LTcj?uto}+)Ry7 zrRcbO7%pE#m}Fa2!o`dzS{Q^k%2YZUfSE4hqzjDILc}D=Uf45_GAvBIJSz= zRI_Uasbck~xLPVz5_unCN$k(s@6jwP;8fILYPI_Hc%}XAle+A#qnJXG_YVMf()g)^ z1Ua-?&LaNe!!=T4{}J+@p|-PN;F_!x$Hum}T+TT&Hy5%2L3zH&wPS08E&eN(E5LmC zY7pYMk^C!;*h2Z+)l)JTXBcg9vFA;OZJDx}|Ett-kkw`kPsIlRO_8%_XU6ZvdthBudMQJQ31 z^0?1}iQ6JG%01m)o6FmAFq}kI9cQ{0Cp@ynJ-_gcI7?>x_cVq{zUA{AJuHVX2zU;}53Qe57X#69)eafb9>dEZcD#WOxG}(3>+9&qy z{Chl;4C2ZYxT5F+IB4}scQBtif3>KkHlL+bMvcwPTrN6ySJKhv(mU=FkwlSI>Uzkn4B_k}Qm)1s zquf>C^%X~THkL!rtTeX=b@&$x^ux*w&^ z+&Yk*Q5>J5b48xqs2ZaSyMXJE{1t3VHY|h2x={|!Q$~$a{E>)N(UOt`=%kr)YKva0 z`tS}$nC&ngrxi0m7mZ!ho;Es65!<=eoNjA@_AD)rzMSeZXIdh-wS|>iUIINt@Bb?> zPz!SoJ5GPNEE!9bKF$bGZ=DK~NPTS_R*+GhN=Yh-W@@>6_~t3+Gwr;M$LY1m`;m&} z5thq$jmqf%ig^!!&4Suckh~uTV%um-efi-q6CbO+6NUvzY zTp{(9+911xk@s*JY7v{Nzo6qh|5Ua781k|>?<>};rL05d2juo3dS9}y-7nFxo--e| z9`y^K5H~8hev|)kjkO)D)+TPf+RR8+rSzxkg(y)Eqi4smY@rHGx>!D1VdOKUY7dE0 z|Ew1L)<>&zO@01_j|Tf%G|Zl?!aV}d#tjlmz~`z z&yZw;*C=?B8gaW#_N7N`+-kePG`UWhEOEZit@)x9dE~0_3M(FPtoxnT3OSczTG5dH z7WE|I+OU3bZLpoXrCIPA+v`#<&Mn=`FN~tJE!x7KH~aM3aEg%QI;-))V{0qx+^}dm zS1XZUFm0|CckvH;_t@ItNS~>^x3AjUzMeFVM3-j5bAa?*OHWp@(+JnPn=Fn3jyFz% zZM9CUl+UfTmN_{1JT#a~GW7{+C~Xm2GsZ<&f|#!tj)SA5I+%@r6wGqFS95T@#fLr$ z6iFD-E8hl{<`L6tgXb$&+8QIN;wvxh)R&%++>t*eN<~RNd2h34|D|fu8li8N`e_dX#oKWpZNCxUgMM z=X7nGTXozFmqRR$y{esZ6{r)E>KYZrRh+d!?PQ5Yot&@2WS?^zF4})H*^|^Iy{yrZ z+jp|@T<*HZMqAtBT1i~5%f_z;tK7eu<>wG2c_mRbR^Pdz zezMyqDRuQdM(yh{SH~&uVevzp-FpAJK9sgB_g9S1S|6_c@_@P2lf4(YNHc^o{BmkG zpgEy*QuKpm8>OMS2NM|D7^oESBV&21Y?bIelxLz;u8o^I)8-MNYc)lDFI=S2RM#=SQnUX8j%WURK*<`^CTch!JlnMp&rbxyP%$WbzPBw5MGQYQEz`+Tog; zX2Xi{uLf`V35zn#TbkWlq<2|P$tUm?@YFaAl-yU$UF{K6|_G;V@fG3JXp? zhE$)+v$%t^v*zj0+hbLHJY3|*XeHz$MsVW(f-H=@T)tinf^ z*7%=)`{~bb+5Pk1Yiu6eTp!AYYQ38Wx70QdY>k22Qege&!P{y>8IK42ao8Vwd2HM~ zxYsf^EyGcd^0Gt$bP9mVG?Y=50#?utNy& z2N)wtA+|Qu6=J)GYK}c!HgNGZ>KLl4-is7&h*%e1tThHKVqn6WJTTE5n4pJ9h+)-s zv1?#Lf5PO&+Q7sni|ey2ea$}lJQnC{LK5=#_4PUYKF`}5^7eXiZ*Q+B$8cY-=WAHL zW(j69z-%-co~ao##l|$74lQJCHk(@vi_HTqu(jN@%tJSpQaoM1YNuMQ_Zw24*ha~Ou_5H)rO9)lk=T*N>yy=ZQXtD$3Wn+KJC7XhiskZ8RLI5CnD@8jJ*> zo$-O_BS?e!D+U&RM&tz~LhFNkpwKfuG%xq^LRUgVu5YH-I8NlNa#ljfy5-1!;{{ zziza~vtglrB;sf{L0;fa8fsaFYJJp_P-=(}=$rFKX%gO)?xZ;L~h3nwbpEQ6!+)Hfg zu??f$=sf-!0^AQhMArVs1|hNZr&N{RY64g1XA@i`j{5!e+l&xh+hCDxAigak9$sqQ z+l0k75FmZHYyD8h|FvFmNMxA?6^c-eelW3@n4&@C#)zVw=kGD<8e9K?@#!Cc3Vo6h zMK{vw430DKp8;C;dLo^{5G0`~f5zKpDnm6YPke|5-syC$@i5|WeRG{&8)|yfl2xQB zQhDiKXEqPOTEZnHZ5*vbLe+-i5=9K7MvkG38c|aG2NjGBVI=rLDgH}(!_)2204Uw# zX`5(-zgf{uqlEURk{W=5qo)i#CxhM~90mH6eJm95ri(`F!K7ZV59X=jGi<*`pQz)* zkYIg%T`D|0#8SJ* z$S_n&@i@U(n)8d^yqW!_ymT`RD$ep$au>R#(Fj9D#U)Q2B-|?c{b_A*JPw_~apTj$ zakU%;dmCvIDVw&Ys4=1>bSR_BRN99u5^-?6&iEW$dKK}rNyPSalUX-y8eKQEP9uB> z)j!ldINCFKtPouK^I_^9S~qyCd;Q?jo9j?Rrq>3Sz9*cBvX1#af-XbaHAXdc7+m_n zhS9pe)S&=x)JdMI&`KN%Wbr)ZJIfdbLG z{vGjyOHm3%xoNSmmk2-yW!{k<8{ost8gnqVl|!Xy0HF)BhQy9Ss`*_Ls)5{>=qbp3 z3G~TXZ}9AHie~)3q@U05^A8VWD-!olJ^JBSV16hDsyEhWU9fBeqbdA0oq>N!bygAM zRYPe>5#pJFr4NKL_4e1gEZkr3A0Fzjb*DhcKr@B#*1@Hpt%oTdMGy0^De!u< z8_|Z&vZm`^tG!w`*qdnbS5`(@>?OJ`%c)9;{b>W!wzjBaUkGorHY>-m9=oDTI~ z27n=@ercvaqkG4>3=KYTzI#fAw&~~p1EQG@*e!KPd#Rs(g$4TSW=b^sW%JgX^!vc_ zlu>_qss|ClRai#}cp~w$Fj^r7=_GMiI z%P+|!grgfCYD(UIzt-%}x-E^Yp6n6LW{e<5D*e~>#^Cbv9$^6fx=z05p4Q2Nh>ATR;o}*p%lzrr!J|9)Z!c9{uCFfK9Uh#%KFy~ z8GvtT&mB^3tQ7cnj428zh4n2OK;h5;ywdx+N7?uJ)W#zghbdGG2B z^gpa~bP7=KSruxB%%5kPS3yDjU{p8Ayv264wV?tpv{NlR;$ShSa?<~EVJ1|^K=4-w zHZjlP67x8hgt#g%xN(>WlR7+PU$w(iCk6l^V}*_)U}9f^%p05dG>;CrC4LlWFA)1J zu~}YdRSXmJy}@}ud;sY!16ccsnE00 zl$Frm?Dr>SdYA^`@sr6ku>37l96ACAi+<|*>DEs}KS=!yM>;>B(a(~8TN7m*$A)mIxn5T8bcAIOFe>#1uMT|zwa8TH_dweDJuB87VE$7lZKH8T`>90 zZMF2D$nuK!{3~X))o&UVi9A&z`oM%NXhMGW=#6;XVL%%tVlTs$$kS$<_CyK#r+ zu$4%Pbc_dD$9Ujx-BIiA1jmsY-BH86SgECm+or6mW>~^Tu%@w}dK%JR3A3^9i(Wlu zJ}ti@+ioji%(g~&ZOEkZxYsvkU6w4H+~1eJr}s@{!3V*#WpLb~HB^F<_H?5$yuJ=# zdu;&0Ux2{K-z1ZI`R$%Y;H`%7mVV#0`OB-8{w7nf!R7ZY#^Q|)mgAUwFZhy#%JM6D zU|{)Gu_oe!iIq&xD;m6HVY)!{8`#2qjI(?cOS~{m0in`#fU%iR4m37xq-r8TBgh

4ylqx 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 literal 0 HcmV?d00001 diff --git a/src/packages-legacy/System.Threading.1.0.2856.0/System.Threading.xml b/src/packages-legacy/System.Threading.1.0.2856.0/System.Threading.xml new file mode 100644 index 0000000..3aff7f6 --- /dev/null +++ b/src/packages-legacy/System.Threading.1.0.2856.0/System.Threading.xml @@ -0,0 +1,19811 @@ + + + + System.Threading + + + +

+ A stub version of .NET 4.0 contracts. + + + + + A dummy class that implements GetResourceString. Environment.GetResourceString(string) is an internal + method in mscorlib.dll. + + + + + An interface similar to the one added in .NET 4.0. + + + + + .NET 4.0 Monitor class supports new overloads that return a boolean value + representing whether the lock was successfully taken or not. The return value + is meant to be accurate even in the presence of thread aborts. + + Monitor2 implements these methods as simple wrappers over the .NET 3.5 methods, + but without making the guarantees related to thread aborts. + + + + + This internal class from mscorlib.dll is used by ConcurrentDictionary. + + + + + OperationCanceledException is changing from .NET 3.5 to .NET 4.0. To make Parallel Extensions work, + we include the new version as OperationCanceledException2. + + + + + A convenience class for common platform-related logic. + + + + + Gets the number of available processors available to this process on the current machine. + + + + + A dummy replacement for the .NET 4.0 SecuritySafeCriticalAttribute. The dummy attribute makes the + code compile, but we are likely losing the ability to be called from a partial trust environment. + + + + + A dummy replacement for the .NET internal class StackCrawlMark. + + + + + Represents a thread-safe collection of keys and values. + + The type of the keys in the dictionary. + The type of the values in the dictionary. + + All public and protected members of are thread-safe and may be used + concurrently from multiple threads. + + + + + Initializes a new instance of the + class that is empty, has the default concurrency level, has the default initial capacity, and + uses the default comparer for the key type. + + + + + Initializes a new instance of the + class that is empty, has the specified concurrency level and capacity, and uses the default + comparer for the key type. + + The estimated number of threads that will update the + concurrently. + The initial number of elements that the + can contain. + is + less than 1. + is less than + 0. + + + + Initializes a new instance of the + class that contains elements copied from the specified , has the default concurrency + level, has the default initial capacity, and uses the default comparer for the key type. + + The whose elements are copied to + the new + . + is a null reference + (Nothing in Visual Basic). + contains one or more + duplicate keys. + + + + Initializes a new instance of the + class that is empty, has the specified concurrency level and capacity, and uses the specified + . + + The + implementation to use when comparing keys. + is a null reference + (Nothing in Visual Basic). + + + + Initializes a new instance of the + class that contains elements copied from the specified , has the default concurrency level, has the default + initial capacity, and uses the specified + . + + The whose elements are copied to + the new + . + The + implementation to use when comparing keys. + is a null reference + (Nothing in Visual Basic). -or- + is a null reference (Nothing in Visual Basic). + + + + + Initializes a new instance of the + class that contains elements copied from the specified , + has the specified concurrency level, has the specified initial capacity, and uses the specified + . + + The estimated number of threads that will update the + concurrently. + The whose elements are copied to the new + . + The implementation to use + when comparing keys. + + is a null reference (Nothing in Visual Basic). + -or- + is a null reference (Nothing in Visual Basic). + + + is less than 1. + + contains one or more duplicate keys. + + + + Initializes a new instance of the + class that is empty, has the specified concurrency level, has the specified initial capacity, and + uses the specified . + + The estimated number of threads that will update the + concurrently. + The initial number of elements that the + can contain. + The + implementation to use when comparing keys. + + is less than 1. -or- + is less than 0. + + is a null reference + (Nothing in Visual Basic). + + + + Attempts to add the specified key and value to the . + + The key of the element to add. + The value of the element to add. The value can be a null reference (Nothing + in Visual Basic) for reference types. + true if the key/value pair was added to the + successfully; otherwise, false. + is null reference + (Nothing in Visual Basic). + The + contains too many elements. + + + + Determines whether the contains the specified + key. + + The key to locate in the . + true if the contains an element with + the specified key; otherwise, false. + is a null reference + (Nothing in Visual Basic). + + + + Attempts to remove and return the the value with the specified key from the + . + + The key of the element to remove and return. + When this method returns, contains the object removed from the + or the default value of + if the operation failed. + true if an object was removed successfully; otherwise, false. + is a null reference + (Nothing in Visual Basic). + + + + Removes the specified key from the dictionary if it exists and returns its associated value. + If matchValue flag is set, the key will be removed only if is associated with a particular + value. + + The key to search for and remove if it exists. + The variable into which the removed value, if found, is stored. + Whether removal of the key is conditional on its value. + The conditional value to compare against if is true + + + + + Attempts to get the value associated with the specified key from the . + + The key of the value to get. + When this method returns, contains the object from + the + with the spedified key or the default value of + , if the operation failed. + true if the key was found in the ; + otherwise, false. + is a null reference + (Nothing in Visual Basic). + + + + Compares the existing value for the specified key with a specified value, and if they’re equal, + updates the key with a third value. + + The key whose value is compared with and + possibly replaced. + The value that replaces the value of the element with if the comparison results in equality. + The value that is compared to the value of the element with + . + true if the value with was equal to and replaced with ; otherwise, + false. + is a null + reference. + + + + Removes all keys and values from the . + + + + + Copies the elements of the to an array of + type , starting at the + specified array index. + + The one-dimensional array of type + that is the destination of the elements copied from the . The array must have zero-based indexing. + The zero-based index in at which copying + begins. + is a null reference + (Nothing in Visual Basic). + is less than + 0. + is equal to or greater than + the length of the . -or- The number of elements in the source + is greater than the available space from to the end of the destination + . + + + + Copies the key and value pairs stored in the to a + new array. + + A new array containing a snapshot of key and value pairs copied from the . + + + + Copy dictionary contents to an array - shared implementation between ToArray and CopyTo. + + Important: the caller must hold all locks in m_locks before calling CopyToPairs. + + + + + Copy dictionary contents to an array - shared implementation between ToArray and CopyTo. + + Important: the caller must hold all locks in m_locks before calling CopyToEntries. + + + + + Copy dictionary contents to an array - shared implementation between ToArray and CopyTo. + + Important: the caller must hold all locks in m_locks before calling CopyToObjects. + + + + Returns an enumerator that iterates through the . + An enumerator for the . + + The enumerator returned from the dictionary is safe to use concurrently with + reads and writes to the dictionary, however it does not represent a moment-in-time snapshot + of the dictionary. The contents exposed through the enumerator may contain modifications + made to the dictionary after was called. + + + + + Shared internal implementation for inserts and updates. + If key exists, we always return false; and if updateIfExists == true we force update with value; + If key doesn't exist, we always add value and return true; + + + + + Adds a key/value pair to the + if the key does not already exist. + + The key of the element to add. + The function used to generate a value for the key + is a null reference + (Nothing in Visual Basic). + is a null reference + (Nothing in Visual Basic). + The dictionary contains too many + elements. + The value for the key. This will be either the existing value for the key if the + key is already in the dictionary, or the new value for the key as returned by valueFactory + if the key was not in the dictionary. + + + + Adds a key/value pair to the + if the key does not already exist. + + The key of the element to add. + the value to be added, if the key does not already exist + is a null reference + (Nothing in Visual Basic). + The dictionary contains too many + elements. + The value for the key. This will be either the existing value for the key if the + key is already in the dictionary, or the new value if the key was not in the dictionary. + + + + Adds a key/value pair to the if the key does not already + exist, or updates a key/value pair in the if the key + already exists. + + The key to be added or whose value should be updated + The function used to generate a value for an absent key + The function used to generate a new value for an existing key + based on the key's existing value + is a null reference + (Nothing in Visual Basic). + is a null reference + (Nothing in Visual Basic). + is a null reference + (Nothing in Visual Basic). + The dictionary contains too many + elements. + The new value for the key. This will be either be the result of addValueFactory (if the key was + absent) or the result of updateValueFactory (if the key was present). + + + + Adds a key/value pair to the if the key does not already + exist, or updates a key/value pair in the if the key + already exists. + + The key to be added or whose value should be updated + The value to be added for an absent key + The function used to generate a new value for an existing key based on + the key's existing value + is a null reference + (Nothing in Visual Basic). + is a null reference + (Nothing in Visual Basic). + The dictionary contains too many + elements. + The new value for the key. This will be either be the result of addValueFactory (if the key was + absent) or the result of updateValueFactory (if the key was present). + + + + Adds the specified key and value to the . + + The object to use as the key of the element to add. + The object to use as the value of the element to add. + is a null reference + (Nothing in Visual Basic). + The dictionary contains too many + elements. + + An element with the same key already exists in the . + + + + Removes the element with the specified key from the . + + The key of the element to remove. + true if the element is successfully remove; otherwise false. This method also returns + false if + was not found in the original . + + is a null reference + (Nothing in Visual Basic). + + + + Adds the specified value to the + with the specified key. + + The + structure representing the key and value to add to the . + The of is null. + The + contains too many elements. + An element with the same key already exists in the + + + + + Determines whether the + contains a specific key and value. + + The + structure to locate in the . + true if the is found in the ; otherwise, false. + + + + Removes a key and value from the dictionary. + + The + structure representing the key and value to remove from the . + true if the key and value represented by is successfully + found and removed; otherwise, false. + The Key property of is a null reference (Nothing in Visual Basic). + + + Returns an enumerator that iterates through the . + An enumerator for the . + + The enumerator returned from the dictionary is safe to use concurrently with + reads and writes to the dictionary, however it does not represent a moment-in-time snapshot + of the dictionary. The contents exposed through the enumerator may contain modifications + made to the dictionary after was called. + + + + + Adds the specified key and value to the dictionary. + + The object to use as the key. + The object to use as the value. + is a null reference + (Nothing in Visual Basic). + The dictionary contains too many + elements. + + is of a type that is not assignable to the key type of the . -or- + is of a type that is not assignable to , + the type of values in the . + -or- A value with the same key already exists in the . + + + + + Gets whether the contains an + element with the specified key. + + The key to locate in the . + true if the contains + an element with the specified key; otherwise, false. + is a null reference + (Nothing in Visual Basic). + + + Provides an for the + . + An for the . + + + + Removes the element with the specified key from the . + + The key of the element to remove. + is a null reference + (Nothing in Visual Basic). + + + + Copies the elements of the to an array, starting + at the specified array index. + + The one-dimensional array that is the destination of the elements copied from + the . The array must have zero-based + indexing. + The zero-based index in at which copying + begins. + is a null reference + (Nothing in Visual Basic). + is less than + 0. + is equal to or greater than + the length of the . -or- The number of elements in the source + is greater than the available space from to the end of the destination + . + + + + Replaces the internal table with a larger one. To prevent multiple threads from resizing the + table as a result of races, the table of buckets that was deemed too small is passed in as + an argument to GrowTable(). GrowTable() obtains a lock, and then checks whether the bucket + table has been replaced in the meantime or not. + + Reference to the bucket table that was deemed too small. + + + + Computes the bucket and lock number for a particular key. + + + + + Acquires all locks for this hash table, and increments locksAcquired by the number + of locks that were successfully acquired. The locks are acquired in an increasing + order. + + + + + Acquires a contiguous range of locks for this hash table, and increments locksAcquired + by the number of locks that were successfully acquired. The locks are acquired in an + increasing order. + + + + + Releases a contiguous range of locks. + + + + + Gets a collection containing the keys in the dictionary. + + + + + Gets a collection containing the values in the dictionary. + + + + + A helper method for asserts. + + + + + A helper function to obtain the string for a particular resource key. + + + + + + + Get the data array to be serialized + + + + + Construct the dictionary from a previously seiralized one + + + + + Gets or sets the value associated with the specified key. + + The key of the value to get or set. + The value associated with the specified key. If the specified key is not found, a get + operation throws a + , and a set operation creates a new + element with the specified key. + is a null reference + (Nothing in Visual Basic). + The property is retrieved and + + does not exist in the collection. + + + + Gets the number of key/value pairs contained in the . + + The dictionary contains too many + elements. + The number of key/value paris contained in the . + Count has snapshot semantics and represents the number of items in the + at the moment when Count was accessed. + + + + Gets a value that indicates whether the is empty. + + true if the is empty; otherwise, + false. + + + + Gets a collection containing the keys in the . + + An containing the keys in the + . + + + + Gets a collection containing the values in the . + + An containing the values in + the + . + + + + Gets a value indicating whether the dictionary is read-only. + + true if the is + read-only; otherwise, false. For , this property always returns + false. + + + + Gets a value indicating whether the has a fixed size. + + true if the has a + fixed size; otherwise, false. For , this property always + returns false. + + + + Gets a value indicating whether the is read-only. + + true if the is + read-only; otherwise, false. For , this property always + returns false. + + + + Gets an containing the keys of the . + + An containing the keys of the . + + + + Gets an containing the values in the . + + An containing the values in the . + + + + Gets or sets the value associated with the specified key. + + The key of the value to get or set. + The value associated with the specified key, or a null reference (Nothing in Visual Basic) + if is not in the dictionary or is of a type that is + not assignable to the key type of the . + is a null reference + (Nothing in Visual Basic). + + A value is being assigned, and is of a type that is not assignable to the + key type of the . -or- A value is being + assigned, and is of a type that is not assignable to the value type + of the + + + + + Gets a value indicating whether access to the is + synchronized with the SyncRoot. + + true if access to the is synchronized + (thread safe); otherwise, false. For , this property always + returns false. + + + + Gets an object that can be used to synchronize access to the . This property is not supported. + + The SyncRoot property is not supported. + + + + The number of concurrent writes for which to optimize by default. + + + + + A node in a singly-linked list representing a particular hash table bucket. + + + + + A private class to represent enumeration over the dictionary that implements the + IDictionaryEnumerator interface. + + + + + Represents a thread-safe first-in, first-out collection of objects. + + Specifies the type of elements in the queue. + + All public and protected members of are thread-safe and may be used + concurrently from multiple threads. + + + + + Defines methods to manipulate thread-safe collections intended for producer/consumer usage. + + Specifies the type of elements in the collection. + + All implementations of this interface must enable all members of this interface + to be used concurrently from multiple threads. + + + + + Copies the elements of the to + an + , starting at a specified index. + + The one-dimensional that is the destination of + the elements copied from the . + The array must have zero-based indexing. + The zero-based index in at which copying + begins. + is a null reference (Nothing in + Visual Basic). + is less than + zero. + is equal to or greater than the + length of the + -or- The number of elements in the source is greater than the + available space from to the end of the destination . + + + + + Attempts to add an object to the . + + The object to add to the . + true if the object was added successfully; otherwise, false. + The was invalid for this collection. + + + + Attempts to remove and return an object from the . + + + When this method returns, if the object was removed and returned successfully, contains the removed object. If no object was available to be removed, the value is + unspecified. + + true if an object was removed and returned successfully; otherwise, false. + + + + Copies the elements contained in the to a new array. + + A new array containing the elements copied from the . + + + + Initializes a new instance of the class. + + + + + Initializes the contents of the queue from an existing collection. + + A collection from which to copy elements. + + + + Initializes a new instance of the + class that contains elements copied from the specified collection + + The collection whose elements are copied to the new . + The argument is + null. + + + + Get the data array to be serialized + + + + + Construct the queue from a previously seiralized one + + + + + Copies the elements of the to an , starting at a particular + index. + + The one-dimensional Array that is the + destination of the elements copied from the + . The Array must have zero-based indexing. + The zero-based index in at which copying + begins. + is a null reference (Nothing in + Visual Basic). + is less than + zero. + + is multidimensional. -or- + does not have zero-based indexing. -or- + is equal to or greater than the length of the + -or- The number of elements in the source is + greater than the available space from to the end of the destination + . -or- The type of the source cannot be cast automatically to the type of the + destination . + + + + + Returns an enumerator that iterates through a collection. + + An that can be used to iterate through the collection. + + + + Attempts to add an object to the . + + The object to add to the . The value can be a null + reference (Nothing in Visual Basic) for reference types. + + true if the object was added successfully; otherwise, false. + For , this operation will always add the object to the + end of the + and return true. + + + + Attempts to remove and return an object from the . + + + When this method returns, if the operation was successful, contains the + object removed. If no object was available to be removed, the value is unspecified. + + true if an element was removed and returned succesfully; otherwise, false. + For , this operation will attempt to remove the object + from the beginning of the . + + + + + Copies the elements stored in the to a new array. + + A new array containing a snapshot of elements copied from the . + + + + Copies the elements to a new . + + A new containing a snapshot of + elements copied from the . + + + + Store the position of the current head and tail positions. + + return the head segment + return the tail segment + return the head offset + return the tail offset + + + + Copies the elements to an existing one-dimensional Array, starting at the specified array index. + + The one-dimensional Array that is the + destination of the elements copied from the + . The Array must have zero-based + indexing. + The zero-based index in at which copying + begins. + is a null reference (Nothing in + Visual Basic). + is less than + zero. + is equal to or greater than the + length of the + -or- The number of elements in the source is greater than the + available space from to the end of the destination . + + + + + Returns an enumerator that iterates through the . + + An enumerator for the contents of the . + + The enumeration represents a moment-in-time snapshot of the contents + of the queue. It does not reflect any updates to the collection after + was called. The enumerator is safe to use + concurrently with reads from and writes to the queue. + + + + + Adds an object to the end of the . + + The object to add to the end of the . The value can be a null reference + (Nothing in Visual Basic) for reference types. + + + + + Attempts to remove and return the object at the beginning of the . + + + When this method returns, if the operation was successful, contains the + object removed. If no object was available to be removed, the value is unspecified. + + true if an element was removed and returned from the beggining of the + succesfully; otherwise, false. + + + + Attempts to return an object from the beginning of the + without removing it. + + When this method returns, contains an object from + the beginning of the or an + unspecified value if the operation failed. + true if and object was returned successfully; otherwise, false. + + + + Gets a value indicating whether access to the is + synchronized with the SyncRoot. + + true if access to the is synchronized + with the SyncRoot; otherwise, false. For , this property always + returns false. + + + + Gets an object that can be used to synchronize access to the . This property is not supported. + + The SyncRoot property is not supported. + + + + Gets a value that indicates whether the is empty. + + true if the is empty; otherwise, false. + + For determining whether the collection contains any items, use of this property is recommended + rather than retrieving the number of items from the property and comparing it + to 0. However, as this collection is intended to be accessed concurrently, it may be the case + that another thread will modify the collection after returns, thus invalidating + the result. + + + + + Gets the number of elements contained in the . + + The number of elements contained in the . + + For determining whether the collection contains any items, use of the + property is recommended rather than retrieving the number of items from the + property and comparing it to 0. + + + + + private class for ConcurrentQueue. + a queue is a linked list of small arrays, each node is called a segment. + A segment contains an array, a pointer to the next segment, and m_low, m_high indices recording + the first and last valid elements of the array. + + + + + Create and initialize a segment with the specified index. + + + + + Add an element to the tail of the current segment + exclusively called by ConcurrentQueue.InitializedFromCollection + InitializeFromCollection is responsible to guaratee that there is no index overflow, + and there is no contention + + + + + + Create a new segment and append to the current one + Does not update the m_tail pointer + exclusively called by ConcurrentQueue.InitializedFromCollection + InitializeFromCollection is responsible to guaratee that there is no index overflow, + and there is no contention + + the reference to the new Segment + + + + Create a new segment and append to the current one + Update the m_tail pointer + This method is called when there is no contention + + + + + Try to append an element at the end of this segment. + + the element to append + The tail. + true if the element is appended, false if the current segment is full + if appending the specified element succeeds, and after which the segment is full, + then grow the segment + + + + try to remove an element from the head of current segment + + The result. + The head. + return false only if the current segment is empty + + + + try to peek the current segment + + holds the return value of the element at the head position, + value set to default(T) if there is no such an element + true if there are elements in the current segment, false otherwise + + + + Convert part or all of the current segment into a List + + the start position + the end position + the result list + + + + return the next segment + + + + + return true if the current segment is empty (doesn't have any element available to dequeue, + false otherwise + + + + + return the position of the head of the current segment + + + + + return the logical position of the tail of the current segment + + + + + Represents a thread-safe last-in, first-out collection of objects. + + Specifies the type of elements in the stack. + + All public and protected members of are thread-safe and may be used + concurrently from multiple threads. + + + + + Initializes a new instance of the + class. + + + + + Initializes a new instance of the + class that contains elements copied from the specified collection + + The collection whose elements are copied to the new . + The argument is + null. + + + + Initializes the contents of the stack from an existing collection. + + A collection from which to copy elements. + + + + Get the data array to be serialized + + + + + Construct the stack from a previously seiralized one + + + + + Removes all objects from the . + + + + + Copies the elements of the to an , starting at a particular + index. + + The one-dimensional that is the destination of + the elements copied from the + . The must + have zero-based indexing. + The zero-based index in at which copying + begins. + is a null reference (Nothing in + Visual Basic). + is less than + zero. + + is multidimensional. -or- + does not have zero-based indexing. -or- + is equal to or greater than the length of the + -or- The number of elements in the source is + greater than the available space from to the end of the destination + . -or- The type of the source cannot be cast automatically to the type of the + destination . + + + + + Copies the elements to an existing one-dimensional , starting at the specified array index. + + The one-dimensional that is the destination of + the elements copied from the + . The must have zero-based + indexing. + The zero-based index in at which copying + begins. + is a null reference (Nothing in + Visual Basic). + is less than + zero. + is equal to or greater than the + length of the + -or- The number of elements in the source is greater than the + available space from to the end of the destination . + + + + + Inserts an object at the top of the . + + The object to push onto the . The value can be + a null reference (Nothing in Visual Basic) for reference types. + + + + + Inserts multiple objects at the top of the atomically. + + The objects to push onto the . + is a null reference + (Nothing in Visual Basic). + + When adding multiple items to the stack, using PushRange is a more efficient + mechanism than using one item at a time. Additionally, PushRange + guarantees that all of the elements will be added atomically, meaning that no other threads will + be able to inject elements between the elements being pushed. Items at lower indices in + the array will be pushed before items at higher indices. + + + + + Inserts multiple objects at the top of the atomically. + + The objects to push onto the . + The zero-based offset in at which to begin + inserting elements onto the top of the . + The number of elements to be inserted onto the top of the . + is a null reference + (Nothing in Visual Basic). + or is negative. Or is greater than or equal to the length + of . + + is + greater than the length of . + + When adding multiple items to the stack, using PushRange is a more efficient + mechanism than using one item at a time. Additionally, PushRange + guarantees that all of the elements will be added atomically, meaning that no other threads will + be able to inject elements between the elements being pushed. Items at lower indices in the + array will be pushed before items at higher indices. + + + + + Push one or many nodes into the stack, if head and tails are equal then push one node to the stack other wise push the list between head + and tail to the stack + + The head pointer to the new list + The tail pointer to the new list + + + + Local helper function to validate the Pop Push range methods input + + + + + Attempts to add an object to the . + + The object to add to the . The value can be a null + reference (Nothing in Visual Basic) for reference types. + + true if the object was added successfully; otherwise, false. + For , this operation + will always insert the object onto the top of the + and return true. + + + + Attempts to return an object from the top of the + without removing it. + + When this method returns, contains an object from + the top of the or an + unspecified value if the operation failed. + true if and object was returned successfully; otherwise, false. + + + + Attempts to pop and return the object at the top of the . + + + When this method returns, if the operation was successful, contains the + object removed. If no object was available to be removed, the value is unspecified. + + true if an element was removed and returned from the top of the + succesfully; otherwise, false. + + + + Attempts to pop and return multiple objects from the top of the + atomically. + + + The to which objects popped from the top of the will be added. + + The number of objects successfully popped from the top of the and inserted in + . + is a null argument (Nothing + in Visual Basic). + + When popping multiple items, if there is little contention on the stack, using + TryPopRange can be more efficient than using + once per item to be removed. Nodes fill the + with the first node to be popped at the startIndex, the second node to be popped + at startIndex + 1, and so on. + + + + + Attempts to pop and return multiple objects from the top of the + atomically. + + + The to which objects popped from the top of the will be added. + + The zero-based offset in at which to begin + inserting elements from the top of the . + The number of elements to be popped from top of the and inserted into . + is a null reference + (Nothing in Visual Basic). + or is negative. Or is greater than or equal to the length + of . + + is + greater than the length of . + + When popping multiple items, if there is little contention on the stack, using + TryPopRange can be more efficient than using + once per item to be removed. Nodes fill the + with the first node to be popped at the startIndex, the second node to be popped + at startIndex + 1, and so on. + + + + + Local helper function to Pop an item from the stack, slow path + + The popped item + True if succeeded, false otherwise + + + + Slow path helper for TryPop. This method assumes an initial attempt to pop an element + has already occurred and failed, so it begins spinning right away. + + The number of items to pop. + + When this method returns, if the pop succeeded, contains the removed object. If no object was + available to be removed, the value is unspecified. This parameter is passed uninitialized. + + True if an element was removed and returned; otherwise, false. + + + + Local helper function to copy the poped elements into a given collection + + The head of the list to be copied + The collection to place the popped items in + the beginning of index of where to place the popped items + The number of nodes. + + + + Attempts to remove and return an object from the . + + + When this method returns, if the operation was successful, contains the + object removed. If no object was available to be removed, the value is unspecified. + + true if an element was removed and returned succesfully; otherwise, false. + For , this operation will attempt to pope the object at + the top of the . + + + + + Copies the items stored in the to a new array. + + A new array containing a snapshot of elements copied from the . + + + + Returns an array containing a snapshot of the list's contents, using + the target list node as the head of a region in the list. + + An array of the list's contents. + + + + Returns an enumerator that iterates through the . + + An enumerator for the . + + The enumeration represents a moment-in-time snapshot of the contents + of the stack. It does not reflect any updates to the collection after + was called. The enumerator is safe to use + concurrently with reads from and writes to the stack. + + + + + Returns an enumerator that iterates through a collection. + + An that can be used to iterate through + the collection. + + The enumeration represents a moment-in-time snapshot of the contents of the stack. It does not + reflect any updates to the collection after + was called. The enumerator is safe to use concurrently with reads + from and writes to the stack. + + + + + Gets a value that indicates whether the is empty. + + true if the is empty; otherwise, false. + + For determining whether the collection contains any items, use of this property is recommended + rather than retrieving the number of items from the property and comparing it + to 0. However, as this collection is intended to be accessed concurrently, it may be the case + that another thread will modify the collection after returns, thus invalidating + the result. + + + + + Gets the number of elements contained in the . + + The number of elements contained in the . + + For determining whether the collection contains any items, use of the + property is recommended rather than retrieving the number of items from the + property and comparing it to 0. + + + + + Gets a value indicating whether access to the is + synchronized with the SyncRoot. + + true if access to the is synchronized + with the SyncRoot; otherwise, false. For , this property always + returns false. + + + + Gets an object that can be used to synchronize access to the . This property is not supported. + + The SyncRoot property is not supported + + + + A simple (internal) node type used to store elements of concurrent stacks and queues. + + + + + Constructs a new node with the specified value and no next node. + + The value of the node. + + + + A debugger view of the IProducerConsumerCollection that makes it simple to browse the + collection's contents at a point in time. + + The type of elements stored within. + + + + Constructs a new debugger view object for the provided collection object. + + A collection to browse in the debugger. + + + + Returns a snapshot of the underlying collection's elements. + + + + + Represents a particular manner of splitting an orderable data source into multiple partitions. + + Type of the elements in the collection. + + + Each element in each partition has an integer index associated with it, which determines the relative + order of that element against elements in other partitions. + + + Inheritors of must adhere to the following rules: +
    +
  1. All indices must be unique, such that there may not be duplicate indices. If all indices are not + unique, the output ordering may be scrambled.
  2. +
  3. All indices must be non-negative. If any indices are negative, consumers of the implementation + may throw exceptions.
  4. +
  5. and should throw a + if the requested partition count is less than or + equal to zero.
  6. +
  7. and should always return a number + of enumerables equal to the requested partition count. If the partitioner runs out of data and cannot + create as many partitions as requested, an empty enumerator should be returned for each of the + remaining partitions. If this rule is not followed, consumers of the implementation may throw a .
  8. +
  9. , , + , and + should never return null. If null is returned, a consumer of the implementation may throw a + .
  10. +
  11. , , + , and + should always return partitions that can fully and uniquely enumerate the input data source. All of + the data and only the data contained in the input source should be enumerated, with no duplication + that was not already in the input, unless specifically required by the particular partitioner's + design. If this is not followed, the output ordering may be scrambled.
  12. +
  13. If returns true, each partition must return elements + with increasing key indices.
  14. +
  15. If returns true, all the keys in partition numbered N + must be larger than all the keys in partition numbered N-1.
  16. +
  17. If returns true, all indices must be monotonically increasing from + 0, though not necessarily within a single partition.
  18. +
+
+
+
+ + + Represents a particular manner of splitting a data source into multiple partitions. + + Type of the elements in the collection. + + + Inheritors of must adhere to the following rules: +
    +
  1. should throw a + if the requested partition count is less than or + equal to zero.
  2. +
  3. should always return a number of enumerables equal to the requested + partition count. If the partitioner runs out of data and cannot create as many partitions as + requested, an empty enumerator should be returned for each of the remaining partitions. If this rule + is not followed, consumers of the implementation may throw a .
  4. +
  5. and + should never return null. If null is returned, a consumer of the implementation may throw a + .
  6. +
  7. and should always return + partitions that can fully and uniquely enumerate the input data source. All of the data and only the + data contained in the input source should be enumerated, with no duplication that was not already in + the input, unless specifically required by the particular partitioner's design. If this is not + followed, the output ordering may be scrambled.
  8. +
+
+
+
+ + + Partitions the underlying collection into the given number of partitions. + + The number of partitions to create. + A list containing enumerators. + + + + Creates an object that can partition the underlying collection into a variable number of + partitions. + + + + The returned object implements the interface. Calling GetEnumerator on the + object creates another partition over the sequence. + + + The method is only supported if the + property returns true. + + + An object that can create partitions over the underlying data source. + Dynamic partitioning is not supported by this + partitioner. + + + + Gets whether additional partitions can be created dynamically. + + + true if the can create partitions dynamically as they are + requested; false if the can only allocate + partitions statically. + + + + If a derived class does not override and implement , + should return false. The value of should not vary over the lifetime of this instance. + + + + + + Initializes a new instance of the class with the + specified constraints on the index keys. + + + Indicates whether the elements in each partition are yielded in the order of + increasing keys. + + + Indicates whether elements in an earlier partition always come before + elements in a later partition. If true, each element in partition 0 has a smaller order key than + any element in partition 1, each element in partition 1 has a smaller order key than any element + in partition 2, and so on. + + + Indicates whether keys are normalized. If true, all order keys are distinct + integers in the range [0 .. numberOfElements-1]. If false, order keys must still be dictinct, but + only their relative order is considered, not their absolute values. + + + + + Partitions the underlying collection into the specified number of orderable partitions. + + + Each partition is represented as an enumerator over key-value pairs. + The value of the pair is the element itself, and the key is an integer which determines + the relative ordering of this element against other elements in the data source. + + The number of partitions to create. + A list containing enumerators. + + + + Creates an object that can partition the underlying collection into a variable number of + partitions. + + + + The returned object implements the interface. Calling GetEnumerator on the + object creates another partition over the sequence. + + + Each partition is represented as an enumerator over key-value pairs. The value in the pair is the element + itself, and the key is an integer which determines the relative ordering of this element against + other elements. + + + The method is only supported if the SupportsDynamicPartitions + property returns true. + + + An object that can create partitions over the underlying data source. + Dynamic partitioning is not supported by this + partitioner. + + + + Partitions the underlying collection into the given number of ordered partitions. + + + The default implementation provides the same behavior as except + that the returned set of partitions does not provide the keys for the elements. + + The number of partitions to create. + A list containing enumerators. + + + + Creates an object that can partition the underlying collection into a variable number of + partitions. + + + + The returned object implements the interface. Calling GetEnumerator on the + object creates another partition over the sequence. + + + The default implementation provides the same behavior as except + that the returned set of partitions does not provide the keys for the elements. + + + The method is only supported if the + property returns true. + + + An object that can create partitions over the underlying data source. + Dynamic partitioning is not supported by this + partitioner. + + + + Gets whether elements in each partition are yielded in the order of increasing keys. + + + + + Gets whether elements in an earlier partition always come before elements in a later partition. + + + If returns true, each element in partition 0 has a + smaller order key than any element in partition 1, each element in partition 1 has a smaller + order key than any element in partition 2, and so on. + + + + + Gets whether order keys are normalized. + + + If returns true, all order keys are distinct integers in the range + [0 .. numberOfElements-1]. If the property returns false, order keys must still be dictinct, but + only their relative order is considered, not their absolute values. + + + + + Converts an enumerable over key-value pairs to an enumerable over values. + + + + + Provides common partitioning strategies for arrays, lists, and enumerables. + + + + The static methods on are all thread-safe and may be used concurrently + from multiple threads. However, while a created partitioner is in use, the underlying data source + should not be modified, whether from the same thread that's using a partitioner or from a separate + thread. + + + + + + Creates an orderable partitioner from an + instance. + + Type of the elements in source list. + The list to be partitioned. + + A Boolean value that indicates whether the created partitioner should dynamically + load balance between partitions rather than statically partition. + + + An orderable partitioner based on the input list. + + + + + Creates an orderable partitioner from a instance. + + Type of the elements in source array. + The array to be partitioned. + + A Boolean value that indicates whether the created partitioner should dynamically load balance + between partitions rather than statically partition. + + + An orderable partitioner based on the input array. + + + + + Creates an orderable partitioner from a instance. + + Type of the elements in source enumerable. + The enumerable to be partitioned. + + An orderable partitioner based on the input array. + + + The ordering used in the created partitioner is determined by the natural order of the elements + as retrieved from the source enumerable. + + + + + DynamicPartitionEnumerator_Abstract defines the enumerator for each partition for the dynamic load-balance + partitioning algorithm. + - Partition is an enumerator of KeyValuePairs, each corresponding to an item in the data source: + the key is the index in the source collection; the value is the item itself. + - a set of such partitions share a reader over data source. The type of the reader is specified by + TSourceReader. + - each partition requests a contiguous chunk of elements at a time from the source data. The chunk + size is initially 1, and doubles every time until it reaches the maximum chunk size. + The implementation for GrabNextChunk() method has two versions: one for data source of IndexRange + types (IList and the array), one for data source of IEnumerable. + - The method "Reset" is not supported for any partitioning algorithm. + - The implementation for MoveNext() method is same for all dynanmic partitioners, so we provide it + in this abstract class. + + Type of the elements in the data source + Type of the reader on the data source + + + + Abstract method to request a contiguous chunk of elements from the source collection + + specified number of elements requested + + true if we successfully reserved at least one element (up to #=requestedChunkSize) + false if all elements in the source collection have been reserved. + + + + + Dispose is abstract, and depends on the type of the source data: + - For source data type IList and Array, the type of the shared reader is just the dataitself. + We don't do anything in Dispose method for IList and Array. + - For source data type IEnumerable, the type of the shared reader is an enumerator we created. + Thus we need to dispose this shared reader enumerator, when there is no more active partitions + left. + + + + + Reset on partitions is not supported + + + + + Moves to the next element if any. + Try current chunk first, if the current chunk do not have any elements left, then we + attempt to grab a chunk from the source collection. + + + true if successfully moving to the next position; + false otherwise, if and only if there is no more elements left in the current chunk + AND the source collection is exhausted. + + + + + Abstract property, returns whether or not the shared reader has already read the last + element of the source data + + + + + Get the current element in the current partition. Property required by IEnumerator interface + This property is abstract because the implementation is different depending on the type + of the source data: IList, Array or IEnumerable + + + + + Get the current element in the current partition. Property required by IEnumerator interface + + + + + Inherits from DynamicPartitioners + Provides customized implementation of GetOrderableDynamicPartitions_Factory method, to return an instance + of EnumerableOfPartitionsForIEnumerator defined internally + + Type of elements in the source data + + + + Overrides OrderablePartitioner.GetOrderablePartitions. + Partitions the underlying collection into the given number of orderable partitions. + + number of partitions requested + A list containing enumerators. + + + + Overrides OrderablePartitioner.GetOrderableDyanmicPartitions + + a enumerable collection of orderable partitions + + + + Whether additional partitions can be created dynamically. + + + + + Provides customized implementation for source data of IEnumerable + Different from the counterpart for IList/Array, this enumerable maintains several additional fields + shared by the partitions it owns, including a boolean "m_hasNoElementsLef", a shared lock, and a + shared count "m_activePartitionCount" + + + + + Inherits from DynamicPartitionEnumerator_Abstract directly + Provides customized implementation for: GrabNextChunk, HasNoElementsLeft, Current, Dispose + + + + + Reserves a contiguous range of elements from source data + + specified number of elements requested + + true if we successfully reserved at least one element (up to #=requestedChunkSize) + false if all elements in the source collection have been reserved. + + + + + If the current partition is to be disposed, we decrement the number of active partitions + for the shared reader. + If the number of active partitions becomes 0, we need to dispose the shared reader we created + + + + + Returns whether or not the shared reader has already read the last + element of the source data + + + We cannot call m_sharedReader.MoveNext(), to see if it hits the last element + or not, because we can't undo MoveNext(). Thus we need to maintain a shared + boolean value m_hasNoElementsLeft across all partitions + + + + + Dynamic load-balance partitioner. This class is abstract and to be derived from by + the customized partitioner classes for IList, Array, and IEnumerable + + Type of the elements in the source data + Type of the source data collection + + + + Constructs a new orderable partitioner + + source data collection + + + + Partition the source data and create an enumerable over the resulting partitions. + + the source data collection + an enumerable of partitions of + + + + Overrides OrderablePartitioner.GetOrderablePartitions. + Partitions the underlying collection into the given number of orderable partitions. + + number of partitions requested + A list containing enumerators. + + + + Overrides OrderablePartitioner.GetOrderableDyanmicPartitions + + a enumerable collection of orderable partitions + + + + Whether additional partitions can be created dynamically. + + + + + Defines dynamic partition for source data of IList and Array. + This class inherits DynamicPartitionEnumerator_Abstract + - implements GrabNextChunk, HasNoElementsLeft, and Dispose methods for IList and Array + - Current property still remains abstract, implementation is different for IList and Array + - introduces another abstract method SourceCount, which returns the number of elements in + the source data. Implementation differs for IList and Array + + Type of the elements in the data source + Type of the reader on the source data + + + + Reserves a contiguous range of elements from source data + + specified number of elements requested + + true if we successfully reserved at least one element (up to #=requestedChunkSize) + false if all elements in the source collection have been reserved. + + + + + For source data type IList and Array, the type of the shared reader is just the data itself. + We don't do anything in Dispose method for IList and Array. + + + + + Get the number of elements from the source reader. + It calls IList.Count or Array.Length + + + + + Returns whether or not the shared reader has already read the last + element of the source data + + + + + Inherits from DynamicPartitioners + Provides customized implementation of GetOrderableDynamicPartitions_Factory method, to return an instance + of EnumerableOfPartitionsForIList defined internally + + Type of elements in the source data + + + + Inherits from PartitionList_Abstract + Provides customized implementation for source data of IList + + + + + Inherits from DynamicPartitionEnumeratorForIndexRange_Abstract + Provides customized implementation of SourceCount property and Current property for IList + + + + + return a KeyValuePair of the current element and its key + + + + + Inherits from DynamicPartitioners + Provides customized implementation of GetOrderableDynamicPartitions_Factory method, to return an instance + of EnumerableOfPartitionsForArray defined internally + + Type of elements in the source data + + + + Inherits from PartitionList_Abstract + Provides customized implementation for source data of Array + + + + + Inherits from DynamicPartitionEnumeratorForIndexRange_Abstract + Provides customized implementation of SourceCount property and Current property for Array + + + + + Static partitioning over IList. + - dynamic and load-balance + - Keys are ordered within each partition + - Keys are ordered across partitions + - Keys are normalized + - Number of partitions is fixed once specified, and the elements of the source data are + distributed to each partition as evenly as possible. + + type of the elements + Type of the source data collection + + + + Abstract method to create a partition that covers a range over source data, + starting from "startIndex", ending at "endIndex" + + start index of the current partition on the source data + end index of the current partition on the source data + a partition enumerator over the specified range + + + + Overrides OrderablePartitioner.GetOrderablePartitions + Return a list of partitions, each of which enumerate a fixed part of the source data + The elements of the source data are distributed to each partition as evenly as possible. + Specifically, if the total number of elements is N, and number of partitions is x, and N = a*x +b, + where a is the quotient, and b is the remainder. Then the first b partitions each has a + 1 elements, + and the last x-b partitions each has a elements. + For example, if N=10, x =3, then + partition 0 ranges [0,3], + partition 1 ranges [4,6], + partition 2 ranges [7,9]. + This also takes care of the situation of (x>N), the last x-N partitions are empty enumerators. + An empty enumerator is indicated by + (m_startIndex == list.Count && m_endIndex == list.Count -1) + + specified number of partitions + a list of partitions + + + + Abstract method to return the number of elements in the source data + + + + + Static Partition for IList/Array. + This class implements all methods required by IEnumerator interface, except for the Current property. + Current Property is different for IList and Array. Arrays calls 'ldelem' instructions for faster element + retrieval. + + + + + Constructs an instance of StaticIndexRangePartition + + the start index in the source collection for the current partition + the end index in the source collection for the current partition + + + + We don't dispose the source for IList and array + + + + + Moves to the next item + Before the first MoveNext is called: m_offset == m_startIndex-1; + + true if successful, false if there is no item left + + + + Current Property is different for IList and Array. Arrays calls 'ldelem' instructions for faster + element retrieval. + + + + + Inherits from StaticIndexRangePartitioner + Provides customized implementation of SourceCount and CreatePartition + + + + + + Inherits from StaticIndexRangePartition + Provides customized implementation of Current property + + + + + + Inherits from StaticIndexRangePartitioner + Provides customized implementation of SourceCount and CreatePartition for Array + + + + + Inherits from StaticIndexRangePartitioner + Provides customized implementation of SourceCount and CreatePartition + + + + + A very simple primitive that allows us to share a value across multiple threads. + + + + + Represents one or more errors that occur during application execution. + + is used to consolidate multiple failures into a single, throwable + exception object. + + + + + Initializes a new instance of the class. + + + + + Initializes a new instance of the class with + a specified error message. + + The error message that explains the reason for the exception. + + + + Initializes a new instance of the class with a specified error + message and a reference to the inner exception that is the cause of this exception. + + The error message that explains the reason for the exception. + The exception that is the cause of the current exception. + The argument + is null. + + + + Initializes a new instance of the class with + references to the inner exceptions that are the cause of this exception. + + The exceptions that are the cause of the current exception. + The argument + is null. + An element of is + null. + + + + Initializes a new instance of the class with + references to the inner exceptions that are the cause of this exception. + + The exceptions that are the cause of the current exception. + The argument + is null. + An element of is + null. + + + + Initializes a new instance of the class with a specified error + message and references to the inner exceptions that are the cause of this exception. + + The error message that explains the reason for the exception. + The exceptions that are the cause of the current exception. + The argument + is null. + An element of is + null. + + + + Initializes a new instance of the class with a specified error + message and references to the inner exceptions that are the cause of this exception. + + The error message that explains the reason for the exception. + The exceptions that are the cause of the current exception. + The argument + is null. + An element of is + null. + + + + Allocates a new aggregate exception with the specified message and list of inner exceptions. + + The error message that explains the reason for the exception. + The exceptions that are the cause of the current exception. + The argument + is null. + An element of is + null. + + + + Initializes a new instance of the class with serialized data. + + The that holds + the serialized object data about the exception being thrown. + The that + contains contextual information about the source or destination. + The argument is null. + The exception could not be deserialized correctly. + + + + Sets the with information about + the exception. + + The that holds + the serialized object data about the exception being thrown. + The that + contains contextual information about the source or destination. + The argument is null. + + + + Returns the that is the root cause of this exception. + + + + + Invokes a handler on each contained by this . + + The predicate to execute for each exception. The predicate accepts as an + argument the to be processed and returns a Boolean to indicate + whether the exception was handled. + + Each invocation of the returns true or false to indicate whether the + was handled. After all invocations, if any exceptions went + unhandled, all unhandled exceptions will be put into a new + which will be thrown. Otherwise, the method simply returns. If any + invocations of the throws an exception, it will halt the processing + of any more exceptions and immediately propagate the thrown exception as-is. + + An exception contained by this was not handled. + The argument is + null. + + + + Flattens an instances into a single, new instance. + + A new, flattened . + + If any inner exceptions are themselves instances of + , this method will recursively flatten all of them. The + inner exceptions returned in the new + will be the union of all of the the inner exceptions from exception tree rooted at the provided + instance. + + + + + Creates and returns a string representation of the current . + + A string representation of the current exception. + + + + Gets a read-only collection of the instances that caused the + current exception. + + + + + Encapsulates a method that has five parameters and returns a value of the type specified by the TResult parameter. + + + + + Propogates notification that operations should be canceled. + + + + A may be created directly in an unchangeable canceled or non-canceled state + using the CancellationToken's constructors. However, to have a CancellationToken that can change + from a non-canceled to a canceled state, + CancellationTokenSource must be used. + CancellationTokenSource exposes the associated CancellationToken that may be canceled by the source through its + Token property. + + + Once canceled, a token may not transition to a non-canceled state, and a token whose + is false will never change to one that can be canceled. + + + All members of this struct are thread-safe and may be used concurrently from multiple threads. + + + + + + Internal constructor only a CancellationTokenSource should create a CancellationToken + + + + + Initializes the CancellationToken. + + + The canceled state for the token. + + + Tokens created with this constructor will remain in the canceled state specified + by the parameter. If is false, + both and will be false. + If is true, + both and will be true. + + + + + Registers a delegate that will be called when this CancellationToken is canceled. + + + + If this token is already in the canceled state, the + delegate will be run immediately and synchronously. Any exception the delegate generates will be + propogated out of this method call. + + + The current ExecutionContext, if one exists, will be captured + along with the delegate and will be used when executing it. + + + The delegate to be executed when the CancellationToken is canceled. + The instance that can + be used to deregister the callback. + is null. + The associated CancellationTokenSource has been disposed. + + + + Registers a delegate that will be called when this + CancellationToken is canceled. + + + + If this token is already in the canceled state, the + delegate will be run immediately and synchronously. Any exception the delegate generates will be + propogated out of this method call. + + + The current ExecutionContext, if one exists, will be captured + along with the delegate and will be used when executing it. + + + The delegate to be executed when the CancellationToken is canceled. + A Boolean value that indicates whether to capture + the current SynchronizationContext and use it + when invoking the . + The instance that can + be used to deregister the callback. + is null. + The associated CancellationTokenSource has been disposed. + + + + Registers a delegate that will be called when this + CancellationToken is canceled. + + + + If this token is already in the canceled state, the + delegate will be run immediately and synchronously. Any exception the delegate generates will be + propogated out of this method call. + + + The current ExecutionContext, if one exists, will be captured + along with the delegate and will be used when executing it. + + + The delegate to be executed when the CancellationToken is canceled. + The state to pass to the when the delegate is invoked. This may be null. + The instance that can + be used to deregister the callback. + is null. + The associated CancellationTokenSource has been disposed. + + + + Registers a delegate that will be called when this + CancellationToken is canceled. + + + + If this token is already in the canceled state, the + delegate will be run immediately and synchronously. Any exception the delegate generates will be + propogated out of this method call. + + + The current ExecutionContext, if one exists, + will be captured along with the delegate and will be used when executing it. + + + The delegate to be executed when the CancellationToken is canceled. + The state to pass to the when the delegate is invoked. This may be null. + A Boolean value that indicates whether to capture + the current SynchronizationContext and use it + when invoking the . + The instance that can + be used to deregister the callback. + is null. + The associated CancellationTokenSource has been disposed. + + + + Determines whether the current CancellationToken instance is equal to the + specified token. + + The other CancellationToken to which to compare this + instance. + True if the instances are equal; otherwise, false. Two tokens are equal if they are associated + with the same CancellationTokenSource or if they were both constructed + from public CancellationToken constructors and their values are equal. + + + + Determines whether the current CancellationToken instance is equal to the + specified . + + The other object to which to compare this instance. + True if is a CancellationToken + and if the two instances are equal; otherwise, false. Two tokens are equal if they are associated + with the same CancellationTokenSource or if they were both constructed + from public CancellationToken constructors and their values are equal. + An associated CancellationTokenSource has been disposed. + + + + Serves as a hash function for a CancellationToken. + + A hash code for the current CancellationToken instance. + + + + Determines whether two CancellationToken instances are equal. + + The first instance. + The second instance. + True if the instances are equal; otherwise, false. + An associated CancellationTokenSource has been disposed. + + + + Determines whether two CancellationToken instances are not equal. + + The first instance. + The second instance. + True if the instances are not equal; otherwise, false. + An associated CancellationTokenSource has been disposed. + + + + Throws a OperationCanceledException if + this token has had cancellation requested. + + + This method provides functionality equivalent to: + + if (token.IsCancellationRequested) + throw new OperationCanceledException(token); + + + The token has had cancellation requested. + The associated CancellationTokenSource has been disposed. + + + + Returns an empty CancellationToken value. + + + The value returned by this property will be non-cancelable by default. + + + + + Gets whether cancellation has been requested for this token. + + Whether cancellation has been requested for this token. + + + This property indicates whether cancellation has been requested for this token, + either through the token initially being construted in a canceled state, or through + calling Cancel + on the token's associated . + + + If this property is true, it only guarantees that cancellation has been requested. + It does not guarantee that every registered handler + has finished executing, nor that cancellation requests have finished propagating + to all registered handlers. Additional synchronization may be required, + particularly in situations where related objects are being canceled concurrently. + + + + + + Gets whether this token is capable of being in the canceled state. + + + If CanBeCanceled returns false, it is guaranteed that the token will never transition + into a canceled state, meaning that will never + return true. + + + + + Gets a that is signaled when the token is canceled. + + Accessing this property causes a WaitHandle + to be instantiated. It is preferable to only use this property when necessary, and to then + dispose the associated instance at the earliest opportunity (disposing + the source will dispose of this allocated handle). The handle should not be closed or disposed directly. + + The associated CancellationTokenSource has been disposed. + + + + Represents a callback delegate that has been registered with a CancellationToken. + + + To unregister a callback, dispose the corresponding Registration instance. + + + + + Attempts to deregister the item. If it's already being run, this may fail. + Entails a full memory fence. + + True if the callback was found and deregistered, false otherwise. + + + + Disposes of the registration and unregisters the target callback from the associated + CancellationToken. + If the target callback is currently executing this method will wait until it completes, except + in the degenerate cases where a callback method deregisters itself. + + + + + Determines whether two CancellationTokenRegistration + instances are equal. + + The first instance. + The second instance. + True if the instances are equal; otherwise, false. + + + + Determines whether two CancellationTokenRegistration instances are not equal. + + The first instance. + The second instance. + True if the instances are not equal; otherwise, false. + + + + Determines whether the current CancellationTokenRegistration instance is equal to the + specified . + + The other object to which to compare this instance. + True, if both this and are equal. False, otherwise. + Two CancellationTokenRegistration instances are equal if + they both refer to the output of a single call to the same Register method of a + CancellationToken. + + + + + Determines whether the current CancellationToken instance is equal to the + specified . + + The other CancellationTokenRegistration to which to compare this instance. + True, if both this and are equal. False, otherwise. + Two CancellationTokenRegistration instances are equal if + they both refer to the output of a single call to the same Register method of a + CancellationToken. + + + + + Serves as a hash function for a CancellationTokenRegistration.. + + A hash code for the current CancellationTokenRegistration instance. + + + + Signals to a that it should be canceled. + + + + is used to instantiate a + (via the source's Token property) + that can be handed to operations that wish to be notified of cancellation or that can be used to + register asynchronous operations for cancellation. That token may have cancellation requested by + calling to the source's Cancel + method. + + + All members of this class, except Dispose, are thread-safe and may be used + concurrently from multiple threads. + + + + + The ID of the thread currently executing the main body of CTS.Cancel() + this helps us to know if a call to ctr.Dispose() is running 'within' a cancellation callback. + This is updated as we move between the main thread calling cts.Cancel() and any syncContexts that are used to + actually run the callbacks. + + + + Initializes the . + + + + + Communicates a request for cancellation. + + + + The associated will be + notified of the cancellation and will transition to a state where + IsCancellationRequested returns true. + Any callbacks or cancelable operations + registered with the will be executed. + + + Cancelable operations and callbacks registered with the token should not throw exceptions. + However, this overload of Cancel will aggregate any exceptions thrown into a , + such that one callback throwing an exception will not prevent other registered callbacks from being executed. + + + The that was captured when each callback was registered + will be reestablished when the callback is invoked. + + + An aggregate exception containing all the exceptions thrown + by the registered callbacks on the associated . + This has been disposed. + + + + Communicates a request for cancellation. + + + + The associated will be + notified of the cancellation and will transition to a state where + IsCancellationRequested returns true. + Any callbacks or cancelable operations + registered with the will be executed. + + + Cancelable operations and callbacks registered with the token should not throw exceptions. + If is true, an exception will immediately propagate out of the + call to Cancel, preventing the remaining callbacks and cancelable operations from being processed. + If is false, this overload will aggregate any + exceptions thrown into a , + such that one callback throwing an exception will not prevent other registered callbacks from being executed. + + + The that was captured when each callback was registered + will be reestablished when the callback is invoked. + + + Specifies whether exceptions should immediately propagate. + An aggregate exception containing all the exceptions thrown + by the registered callbacks on the associated . + This has been disposed. + + + + Releases the resources used by this . + + + This method is not thread-safe for any other concurrent calls. + + + + + Throws an exception if the source has been disposed. + + + + + InternalGetStaticSource() + + Whether the source should be set. + A static source to be shared among multiple tokens. + + + + Registers a callback object. If cancellation has already occurred, the + callback will have been run by the time this method returns. + + + + + + + + + + Invoke the Canceled event. + + + The handlers are invoked synchronously in LIFO order. + + + + + Creates a CancellationTokenSource that will be in the canceled state + when any of the source tokens are in the canceled state. + + The first CancellationToken to observe. + The second CancellationToken to observe. + A CancellationTokenSource that is linked + to the source tokens. + A CancellationTokenSource associated with + one of the source tokens has been disposed. + + + + Creates a CancellationTokenSource that will be in the canceled state + when any of the source tokens are in the canceled state. + + The CancellationToken instances to observe. + A CancellationTokenSource that is linked + to the source tokens. + is null. + A CancellationTokenSource associated with + one of the source tokens has been disposed. + + + + Gets whether cancellation has been requested for this CancellationTokenSource. + + Whether cancellation has been requested for this CancellationTokenSource. + + + This property indicates whether cancellation has been requested for this token source, such as + due to a call to its + Cancel method. + + + If this property returns true, it only guarantees that cancellation has been requested. It does not + guarantee that every handler registered with the corresponding token has finished executing, nor + that cancellation requests have finished propagating to all registered handlers. Additional + synchronization may be required, particularly in situations where related objects are being + canceled concurrently. + + + + + + A simple helper to determine whether cancellation has finished. + + + + + A simple helper to determine whether disposal has occured. + + + + + The ID of the thread that is running callbacks. + + + + + Gets the CancellationToken + associated with this . + + The CancellationToken + associated with this . + The token source has been + disposed. + + + + + + + + + + + + + + The currently executing callback + + + + + A helper class for collating the various bits of information required to execute + cancellation callbacks. + + + + + InternalExecuteCallbackSynchronously_GeneralPath + This will be called on the target synchronization context, however, we still need to restore the required execution context + + + + + A sparsely populated array. Elements can be sparse and some null, but this allows for + lock-free additions and growth, and also for constant time removal (by nulling out). + + The kind of elements contained within. + + + + Allocates a new array with the given initial size. + + How many array slots to pre-allocate. + + + + Adds an element in the first available slot, beginning the search from the tail-to-head. + If no slots are available, the array is grown. The method doesn't return until successful. + + The element to add. + Information about where the add happened, to enable O(1) deregistration. + + + + The head of the doubly linked list. + + + + + The tail of the doubly linked list. + + + + + A struct to hold a link to the exact spot in an array an element was inserted, enabling + constant time removal later on. + + + + + A fragment of a sparsely populated array, doubly linked. + + The kind of elements contained within. + + + + Represents a synchronization primitive that is signaled when its count reaches zero. + + + All public and protected members of are thread-safe and may be used + concurrently from multiple threads, with the exception of Dispose, which + must only be used when all other operations on the have + completed, and Reset, which should only be used when no other threads are + accessing the event. + + + + + Initializes a new instance of class with the + specified count. + + The number of signals required to set the . + is less + than 0. + + + + Releases all resources used by the current instance of . + + + Unlike most of the members of , is not + thread-safe and may not be used concurrently with other members of this instance. + + + + + When overridden in a derived class, releases the unmanaged resources used by the + , and optionally releases the managed resources. + + true to release both managed and unmanaged resources; false to release + only unmanaged resources. + + Unlike most of the members of , is not + thread-safe and may not be used concurrently with other members of this instance. + + + + + Registers a signal with the , decrementing its + count. + + true if the signal caused the count to reach zero and the event was set; otherwise, + false. + The current instance is already set. + + The current instance has already been + disposed. + + + + Registers multiple signals with the , + decrementing its count by the specified amount. + + The number of signals to register. + true if the signals caused the count to reach zero and the event was set; otherwise, + false. + + The current instance is already set. -or- Or is greater than . + + is less + than 1. + The current instance has already been + disposed. + + + + Increments the 's current count by one. + + The current instance is already + set. + is equal to . + + The current instance has already been disposed. + + + + + Attempts to increment the 's current count by one. + + true if the increment succeeded; otherwise, false. If is + already at zero. this will return false. + is equal to . + The current instance has already been + disposed. + + + + Increments the 's current count by a specified + value. + + The value by which to increase . + is less than + 0. + The current instance is already + set. + is equal to . + The current instance has already been + disposed. + + + + Attempts to increment the 's current count by a + specified value. + + The value by which to increase . + true if the increment succeeded; otherwise, false. If is + already at zero this will return false. + is less + than 0. + The current instance is already + set. + is equal to . + The current instance has already been + disposed. + + + + Resets the to the value of . + + + Unlike most of the members of , Reset is not + thread-safe and may not be used concurrently with other members of this instance. + + The current instance has already been + disposed.. + + + + Resets the to a specified value. + + The number of signals required to set the . + + Unlike most of the members of , Reset is not + thread-safe and may not be used concurrently with other members of this instance. + + is + less than 0. + The current instance has alread been disposed. + + + + Blocks the current thread until the is set. + + + The caller of this method blocks indefinitely until the current instance is set. The caller will + return immediately if the event is currently in a set state. + + The current instance has already been + disposed. + + + + Blocks the current thread until the is set, while + observing a . + + The to + observe. + + The caller of this method blocks indefinitely until the current instance is set. The caller will + return immediately if the event is currently in a set state. If the + CancellationToken being observed + is canceled during the wait operation, an + will be thrown. + + has been + canceled. + The current instance has already been + disposed. + + + + Blocks the current thread until the is set, using a + to measure the time interval. + + A that represents the number of + milliseconds to wait, or a that represents -1 milliseconds to + wait indefinitely. + true if the was set; otherwise, + false. + is a negative + number other than -1 milliseconds, which represents an infinite time-out -or- timeout is greater + than . + The current instance has already been + disposed. + + + + Blocks the current thread until the is set, using + a to measure the time interval, while observing a + . + + A that represents the number of + milliseconds to wait, or a that represents -1 milliseconds to + wait indefinitely. + The to + observe. + true if the was set; otherwise, + false. + is a negative + number other than -1 milliseconds, which represents an infinite time-out -or- timeout is greater + than . + The current instance has already been + disposed. + has + been canceled. + + + + Blocks the current thread until the is set, using a + 32-bit signed integer to measure the time interval. + + The number of milliseconds to wait, or (-1) to wait indefinitely. + true if the was set; otherwise, + false. + is a + negative number other than -1, which represents an infinite time-out. + The current instance has already been + disposed. + + + + Blocks the current thread until the is set, using a + 32-bit signed integer to measure the time interval, while observing a + . + + The number of milliseconds to wait, or (-1) to wait indefinitely. + The to + observe. + true if the was set; otherwise, + false. + is a + negative number other than -1, which represents an infinite time-out. + The current instance has already been + disposed. + has + been canceled. + + + + Throws an exception if the latch has been disposed. + + + + + Gets the number of remaining signals required to set the event. + + + The number of remaining signals required to set the event. + + + + + Gets the numbers of signals initially required to set the event. + + + The number of signals initially required to set the event. + + + + + Determines whether the event is set. + + true if the event is set; otherwise, false. + + + + Gets a that is used to wait for the event to be set. + + A that is used to wait for the event to be set. + The current instance has already been disposed. + + should only be used if it's needed for integration with code bases + that rely on having a WaitHandle. If all that's needed is to wait for the + to be set, the method should be preferred. + + + + + Provides a slimmed down version of . + + + All public and protected members of are thread-safe and may be used + concurrently from multiple threads, with the exception of Dispose, which + must only be used when all other operations on the have + completed, and Reset, which should only be used when no other threads are + accessing the event. + + + + + Initializes a new instance of the + class with an initial state of nonsignaled. + + + + + Initializes a new instance of the + class with a Boolen value indicating whether to set the intial state to signaled. + + true to set the initial state signaled; false to set the initial state + to nonsignaled. + + + + Initializes a new instance of the + class with a Boolen value indicating whether to set the intial state to signaled and a specified + spin count. + + true to set the initial state to signaled; false to set the initial state + to nonsignaled. + The number of spin waits that will occur before falling back to a true + wait. + is less than + 0 or greater than the maximum allowed value. + + + + Initializes the internal state of the event. + + Whether the event is set initially or not. + The spin count that decides when the event will block. + + + + Helper to ensure the lock object is created before first use. + + + + + This method lazily initializes the event object. It uses CAS to guarantee that + many threads racing to call this at once don't result in more than one event + being stored and used. The event will be signaled or unsignaled depending on + the state of the thin-event itself, with synchronization taken into account. + + True if a new event was created and stored, false otherwise. + + + + Sets the state of the event to signaled, which allows one or more threads waiting on the event to + proceed. + + + + + Private helper to actually perform the Set. + + Indicates whether we are calling Set() during cancellation. + The object has been canceled. + + + + Sets the state of the event to nonsignaled, which causes threads to block. + + + Unlike most of the members of , is not + thread-safe and may not be used concurrently with other members of this instance. + + + + + Blocks the current thread until the current is set. + + + The maximum number of waiters has been exceeded. + + + The caller of this method blocks indefinitely until the current instance is set. The caller will + return immediately if the event is currently in a set state. + + + + + Blocks the current thread until the current receives a signal, + while observing a . + + The to + observe. + + The maximum number of waiters has been exceeded. + + was + canceled. + + The caller of this method blocks indefinitely until the current instance is set. The caller will + return immediately if the event is currently in a set state. + + + + + Blocks the current thread until the current is set, using a + to measure the time interval. + + A that represents the number of milliseconds + to wait, or a that represents -1 milliseconds to wait indefinitely. + + true if the was set; otherwise, + false. + is a negative + number other than -1 milliseconds, which represents an infinite time-out -or- timeout is greater + than . + + The maximum number of waiters has been exceeded. + + + + + Blocks the current thread until the current is set, using a + to measure the time interval, while observing a . + + A that represents the number of milliseconds + to wait, or a that represents -1 milliseconds to wait indefinitely. + + The to + observe. + true if the was set; otherwise, + false. + is a negative + number other than -1 milliseconds, which represents an infinite time-out -or- timeout is greater + than . + was canceled. + + The maximum number of waiters has been exceeded. + + + + + Blocks the current thread until the current is set, using a + 32-bit signed integer to measure the time interval. + + The number of milliseconds to wait, or (-1) to wait indefinitely. + true if the was set; otherwise, + false. + is a + negative number other than -1, which represents an infinite time-out. + + The maximum number of waiters has been exceeded. + + + + + Blocks the current thread until the current is set, using a + 32-bit signed integer to measure the time interval, while observing a . + + The number of milliseconds to wait, or (-1) to wait indefinitely. + The to + observe. + true if the was set; otherwise, + false. + is a + negative number other than -1, which represents an infinite time-out. + + The maximum number of waiters has been exceeded. + + was canceled. + + + + Releases all resources used by the current instance of . + + + Unlike most of the members of , is not + thread-safe and may not be used concurrently with other members of this instance. + + + + + When overridden in a derived class, releases the unmanaged resources used by the + , and optionally releases the managed resources. + + true to release both managed and unmanaged resources; + false to release only unmanaged resources. + + Unlike most of the members of , is not + thread-safe and may not be used concurrently with other members of this instance. + + + + + Throw ObjectDisposedException if the MRES is disposed + + + + + Private helper method to wake up waiters when a cancellationToken gets canceled. + + + + + Private helper method for updating parts of a bit-string state value. + Mainly called from the IsSet and Waiters properties setters + + + Note: the parameter types must be int as CompareExchange cannot take a Uint + + The new value + The mask used to set the bits + + + + Private helper method - performs Mask and shift, particular helpful to extract a field from a packed word. + eg ExtractStatePortionAndShiftRight(0x12345678, 0xFF000000, 24) => 0x12, ie extracting the top 8-bits as a simple integer + + ?? is there a common place to put this rather than being private to MRES? + + + + + + + + + Performs a Mask operation, but does not perform the shift. + This is acceptable for boolean values for which the shift is unnecessary + eg (val & Mask) != 0 is an appropriate way to extract a boolean rather than using + ((val & Mask) >> shiftAmount) == 1 + + ?? is there a common place to put this rather than being private to MRES? + + + + + + + Helper function to measure and update the wait time + + The first time (in Ticks) observed when the wait started. + The orginal wait timeoutout in milliseconds. + The new wait time in milliseconds, -1 if the time expired, -2 if overflow in counters + has occurred. + + + + Gets the underlying object for this . + + The underlying event object fore this . + + Accessing this property forces initialization of an underlying event object if one hasn't + already been created. To simply wait on this , + the public Wait methods should be preferred. + + + + + Gets whether the event is set. + + true if the event has is set; otherwise, false. + + + + Gets the number of spin waits that will be occur before falling back to a true wait. + + + + + How many threads are waiting. + + + + + Provides support for lazy initialization. + + Specifies the type of element being laziliy initialized. + + + By default, all public and protected members of are thread-safe and may be used + concurrently from multiple threads. These thread-safety guarantees may be removed optionally and per instance + using parameters to the type's constructors. + + + + + + Initializes a new instance of the class that + uses 's default constructor for lazy initialization. + + + An instance created with this constructor may be used concurrently from multiple threads. + + + + + Initializes a new instance of the class that uses a + specified initialization function. + + + The invoked to produce the lazily-initialized value when it is + needed. + + is a null + reference (Nothing in Visual Basic). + + An instance created with this constructor may be used concurrently from multiple threads. + + + + + Initializes a new instance of the + class that uses 's default constructor and a specified thread-safety mode. + + true if this instance should be usable by multiple threads concurrently; false if the instance will only be used by one thread at a time. + + + + + Initializes a new instance of the + class that uses 's default constructor and a specified thread-safety mode. + + The lazy thread-safety mode mode + mode contains an invalid valuee + + + + Initializes a new instance of the class + that uses a specified initialization function and a specified thread-safety mode. + + + The invoked to produce the lazily-initialized value when it is needed. + + true if this instance should be usable by multiple threads concurrently; false if the instance will only be used by one thread at a time. + + is + a null reference (Nothing in Visual Basic). + + + + Initializes a new instance of the class + that uses a specified initialization function and a specified thread-safety mode. + + + The invoked to produce the lazily-initialized value when it is needed. + + The lazy thread-safety mode. + is + a null reference (Nothing in Visual Basic). + mode contains an invalid value. + + + + Static helper function that returns an object based on the given mode. it also throws an exception if the mode is invalid + + + + Forces initialization during serialization. + The StreamingContext for the serialization operation. + + + Creates and returns a string representation of this instance. + The result of calling on the . + + The is null. + + + + + local helper method to initialize the value + + The inititialized T value + + + Creates an instance of T using m_valueFactory in case its not null or use reflection to create a new T() + An instance of Boxed. + + + Gets the value of the Lazy<T> for debugging display purposes. + + + + Gets a value indicating whether this instance may be used concurrently from multiple threads. + + + + + Gets whether the value creation is faulted or not + + + + Gets a value indicating whether the has been initialized. + + true if the instance has been initialized; + otherwise, false. + + The initialization of a instance may result in either + a value being produced or an exception being thrown. If an exception goes unhandled during initialization, + will return false. + + + + + + wrapper class to box the initialized value, this is mainly created to avoid boxing/unboxing the value each time the value is called in case T is + a value type + + + + + Wrapper class to wrap the excpetion thrown by the value factory + + + + A debugger view of the Lazy<T> to surface additional debugging properties and + to ensure that the Lazy<T> does not become initialized if it was not already. + + + Constructs a new debugger view object for the provided Lazy object. + A Lazy object to browse in the debugger. + + + Returns whether the Lazy object is initialized or not. + + + Returns the value of the Lazy object. + + + Returns the execution mode of the Lazy object + + + Returns the execution mode of the Lazy object + + + + Specifies how a instance should synchronize access among multiple threads. + + + + + This mode makes no guarantees around the thread-safety of the instance. If used from multiple threads, the behavior of the is undefined. + This mode should be used when a is guaranteed to never be initialized from more than one thread simultaneously and high performance is crucial. + If valueFactory throws an exception when the is initialized, the exception will be cached and returned on subsequent accesses to Value. Also, if valueFactory recursively + accesses Value on this instance, a will be thrown. + + + + + When multiple threads attempt to simultaneously initialize a instance, this mode allows each thread to execute the + valueFactory but only the first thread to complete initialization will be allowed to set the final value of the . + Once initialized successfully, any future calls to Value will return the cached result. If valueFactory throws an exception on any thread, that exception will be + propagated out of Value. If any thread executes valueFactory without throwing an exception and, therefore, successfully sets the value, that value will be returned on + subsequent accesses to Value from any thread. If no thread succeeds in setting the value, IsValueCreated will remain false and subsequent accesses to Value will result in + the valueFactory delegate re-executing. Also, if valueFactory recursively accesses Value on this instance, an exception will NOT be thrown. + + + + + This mode uses locks to ensure that only a single thread can initialize a instance in a thread-safe manner. In general, + taken if this mode is used in conjunction with a valueFactory delegate that uses locks internally, a deadlock can occur if not + handled carefully. If valueFactory throws an exception when the is initialized, the exception will be cached and returned on + subsequent accesses to Value. Also, if valueFactory recursively accesses Value on this instance, a will be thrown. + + + + + Provides lazy initialization routines. + + + These routines avoid needing to allocate a dedicated, lazy-initialization instance, instead using + references to ensure targets have been initialized as they are accessed. + + + + + Initializes a target reference type with the type's default constructor if the target has not + already been initialized. + + The refence type of the reference to be initialized. + A reference of type to initialize if it has not + already been initialized. + The initialized reference of type . + Type does not have a default + constructor. + + Permissions to access the constructor of type were missing. + + + + This method may only be used on reference types. To ensure initialization of value + types, see other overloads of EnsureInitialized. + + + This method may be used concurrently by multiple threads to initialize . + In the event that multiple threads access this method concurrently, multiple instances of + may be created, but only one will be stored into . In such an occurrence, this method will not dispose of the + objects that were not stored. If such objects must be disposed, it is up to the caller to determine + if an object was not used and to then dispose of the object appropriately. + + + + + + Initializes a target reference type using the specified function if it has not already been + initialized. + + The reference type of the reference to be initialized. + The reference of type to initialize if it has not + already been initialized. + The invoked to initialize the + reference. + The initialized reference of type . + Type does not have a + default constructor. + returned + null. + + + This method may only be used on reference types, and may + not return a null reference (Nothing in Visual Basic). To ensure initialization of value types or + to allow null reference types, see other overloads of EnsureInitialized. + + + This method may be used concurrently by multiple threads to initialize . + In the event that multiple threads access this method concurrently, multiple instances of + may be created, but only one will be stored into . In such an occurrence, this method will not dispose of the + objects that were not stored. If such objects must be disposed, it is up to the caller to determine + if an object was not used and to then dispose of the object appropriately. + + + + + + Initialize the target using the given delegate (slow path). + + The reference type of the reference to be initialized. + The variable that need to be initialized + The delegate that will be executed to initialize the target + The initialized variable + + + + Initializes a target reference or value type with its default constructor if it has not already + been initialized. + + The type of the reference to be initialized. + A reference or value of type to initialize if it + has not already been initialized. + A reference to a boolean that determines whether the target has already + been initialized. + A reference to an object used as the mutually exclusive lock for initializing + . + The initialized value of type . + + + + Initializes a target reference or value type with a specified function if it has not already been + initialized. + + The type of the reference to be initialized. + A reference or value of type to initialize if it + has not already been initialized. + A reference to a boolean that determines whether the target has already + been initialized. + A reference to an object used as the mutually exclusive lock for initializing + . + The invoked to initialize the + reference or value. + The initialized value of type . + + + + Ensure the target is initialized and return the value (slow path). This overload permits nulls + and also works for value type targets. Uses the supplied function to create the value. + + The type of target. + A reference to the target to be initialized. + A reference to a location tracking whether the target has been initialized. + A reference to a location containing a mutual exclusive lock. + + The to invoke in order to produce the lazily-initialized value. + + The initialized object. + + + + A seprate non generic class that contains a global counter for fast path instances for all Ts that has been created, and adds an upper limit for all instances + that uses the fast path, if this limit has been reached, all new instances will use the slow path + + + + + Provides thread-local storage of data. + + Specifies the type of data stored per-thread. + + + With the exception of , all public and protected members of + are thread-safe and may be used + concurrently from multiple threads. + + + + + + Initializes the instance. + + + + + Initializes the instance with the + specified function. + + + The invoked to produce a lazily-initialized value when + an attempt is made to retrieve without it having been previously initialized. + + + is a null reference (Nothing in Visual Basic). + + + + + Releases the resources used by this instance. + + + + + Releases the resources used by this instance. + + + Unlike most of the members of , this method is not thread-safe. + + + + + Releases the resources used by this instance. + + + A Boolean value that indicates whether this method is being called due to a call to . + + + Unlike most of the members of , this method is not thread-safe. + + + + + Tries to get a unique index for the current instance of type T, it first tries to get it from the pool if it is not empty, otherwise it + increments the global counter if it is still below the maximum, otherwise it fails and returns -1 + + True if there is an index available, false otherwise + + + + Gets an array of types that will be used as generic parameters for the GenericHolder class + + The types array + + + Creates and returns a string representation of this instance for the current thread. + The result of calling on the . + + The for the current thread is a null reference (Nothing in Visual Basic). + + + The initialization function referenced in an improper manner. + + + The instance has been disposed. + + + Calling this method forces initialization for the current thread, as is the + case with accessing directly. + + + + + Private helper function to lazily create the value using the calueSelector if specified in the constructor or the default parameterless constructor + + Returns the boxed object + + + + Gets or sets the value of this instance for the current thread. + + + The initialization function referenced in an improper manner. + + + The instance has been disposed. + + + If this instance was not previously initialized for the current thread, + accessing will attempt to initialize it. If an initialization function was + supplied during the construction, that initialization will happen by invoking the function + to retrieve the initial value for . Otherwise, the default value of + will be used. + + + + + Gets whether is initialized on the current thread. + + + The instance has been disposed. + + + + Gets the value of the ThreadLocal<T> for debugging display purposes. It takes care of getting + the value for the current thread in the ThreadLocal mode. + + + + The base abstract class for the holder + + + + + The TLS holder representation + + + + + The generic holder representation + + Dummy param + Dummy param + Dummy param + + + + wrapper to the actual value + + + + A debugger view of the ThreadLocal<T> to surface additional debugging properties and + to ensure that the ThreadLocal<T> does not become initialized if it was not already. + + + Constructs a new debugger view object for the provided ThreadLocal object. + A ThreadLocal object to browse in the debugger. + + + Returns whether the ThreadLocal object is initialized or not. + + + Returns the value of the ThreadLocal object. + + + + Limits the number of threads that can access a resource or pool of resources concurrently. + + + + The provides a lightweight semaphore class that doesn't + use Windows kernel semaphores. + + + All public and protected members of are thread-safe and may be used + concurrently from multiple threads, with the exception of Dispose, which + must only be used when all other operations on the have + completed. + + + + + + Initializes a new instance of the class, specifying + the initial number of requests that can be granted concurrently. + + The initial number of requests for the semaphore that can be granted + concurrently. + + is less than 0. + + + + Initializes a new instance of the class, specifying + the initial and maximum number of requests that can be granted concurrently. + + The initial number of requests for the semaphore that can be granted + concurrently. + The maximum number of requests for the semaphore that can be granted + concurrently. + + is less than 0. -or- + is greater than . -or- + is less than 0. + + + + Blocks the current thread until it can enter the . + + The current instance has already been + disposed. + + + + Blocks the current thread until it can enter the , while observing a + . + + The token to + observe. + was + canceled. + The current instance has already been + disposed. + + + + Blocks the current thread until it can enter the , using a to measure the time interval. + + A that represents the number of milliseconds + to wait, or a that represents -1 milliseconds to wait indefinitely. + + true if the current thread successfully entered the ; + otherwise, false. + is a negative + number other than -1 milliseconds, which represents an infinite time-out -or- timeout is greater + than . + + + + Blocks the current thread until it can enter the , using a to measure the time interval, while observing a . + + A that represents the number of milliseconds + to wait, or a that represents -1 milliseconds to wait indefinitely. + + The to + observe. + true if the current thread successfully entered the ; + otherwise, false. + is a negative + number other than -1 milliseconds, which represents an infinite time-out -or- timeout is greater + than . + was canceled. + + + + Blocks the current thread until it can enter the , using a 32-bit + signed integer to measure the time interval. + + The number of milliseconds to wait, or (-1) to wait indefinitely. + true if the current thread successfully entered the ; + otherwise, false. + is a + negative number other than -1, which represents an infinite time-out. + + + + Blocks the current thread until it can enter the , + using a 32-bit signed integer to measure the time interval, + while observing a . + + The number of milliseconds to wait, or (-1) to + wait indefinitely. + The to observe. + true if the current thread successfully entered the ; otherwise, false. + is a negative number other than -1, + which represents an infinite time-out. + was canceled. + + + + Local helper function, waits on the monitor until the monitor recieves signal or the + timeout is expired + + The maximum timeout + The start ticks to calculate the elapsed time + The CancellationToken to observe. + true if the monitor recieved a signal, false if the timeout expired + + + + Exits the once. + + The previous count of the . + The current instance has already been + disposed. + + + + Exits the a specified number of times. + + The number of times to exit the semaphore. + The previous count of the . + is less + than 1. + The has + already reached its maximum size. + The current instance has already been + disposed. + + + + Releases all resources used by the current instance of . + + + Unlike most of the members of , is not + thread-safe and may not be used concurrently with other members of this instance. + + + + + When overridden in a derived class, releases the unmanaged resources used by the + , and optionally releases the managed resources. + + true to release both managed and unmanaged resources; + false to release only unmanaged resources. + + Unlike most of the members of , is not + thread-safe and may not be used concurrently with other members of this instance. + + + + + Helper function to measure and update the wait time + + The first time (in Ticks) observed when the wait started + The orginal wait timeoutout in milliseconds + The new wait time in milliseconds, -1 if the time expired + + + + Private helper method to wake up waiters when a cancellationToken gets canceled. + + + + + Checks the dispose status by checking the lock object, if it is null means that object + has been disposed and throw ObjectDisposedException + + + + + local helper function to retrieve the exception string message from the resource file + + The key string + + + + Gets the current count of the . + + The current count of the . + + + + Returns a that can be used to wait on the semaphore. + + A that can be used to wait on the + semaphore. + + A successful wait on the does not imply a successful wait on + the itself, nor does it decrement the semaphore's + count. exists to allow a thread to block waiting on multiple + semaphores, but such a wait should be followed by a true wait on the target semaphore. + + The has been disposed. + + + + Provides support for spin-based waiting. + + + + encapsulates common spinning logic. On single-processor machines, yields are + always used instead of busy waits, and on computers with Intel™ processors employing Hyper-Threading™ + technology, it helps to prevent hardware thread starvation. SpinWait encapsulates a good mixture of + spinning and true yielding. + + + is a value type, which means that low-level code can utilize SpinWait without + fear of unnecessary allocation overheads. SpinWait is not generally useful for ordinary applications. + In most cases, you should use the synchronization classes provided by the .NET Framework, such as + . For most purposes where spin waiting is required, however, + the type should be preferred over the method. + + + While SpinWait is designed to be used in concurrent applications, it is not designed to be + used from multiple threads concurrently. SpinWait's members are not thread-safe. If multiple + threads must spin, each should use its own instance of SpinWait. + + + + + + Performs a single spin. + + + This is typically called in a loop, and may change in behavior based on the number of times a + has been called thus far on this instance. + + + + + Resets the spin counter. + + + This makes and behave as though no calls + to had been issued on this instance. If a instance + is reused many times, it may be useful to reset it to avoid yielding too soon. + + + + + Spins until the specified condition is satisfied. + + A delegate to be executed over and over until it returns true. + The argument is null. + + + + Spins until the specified condition is satisfied or until the specified timeout is expired. + + A delegate to be executed over and over until it returns true. + + A that represents the number of milliseconds to wait, + or a TimeSpan that represents -1 milliseconds to wait indefinitely. + True if the condition is satisfied within the timeout; otherwise, false + The argument is null. + is a negative number + other than -1 milliseconds, which represents an infinite time-out -or- timeout is greater than + . + + + + Spins until the specified condition is satisfied or until the specified timeout is expired. + + A delegate to be executed over and over until it returns true. + The number of milliseconds to wait, or (-1) to wait indefinitely. + True if the condition is satisfied within the timeout; otherwise, false + The argument is null. + is a + negative number other than -1, which represents an infinite time-out. + + + + Gets the number of times has been called on this instance. + + + + + Gets whether the next call to will yield the processor, triggering a + forced context switch. + + Whether the next call to will yield the processor, triggering a + forced context switch. + + On a single-CPU machine, always yields the processor. On machines with + multiple CPUs, may yield after an unspecified number of calls. + + + + + A helper class to get the number of preocessors, it updates the numbers of processors every sampling interval + + + + + Gets the number of available processors + + + + + Gets whether the current machine has only a single processor. + + + + + Provides a mutual exclusion lock primitive where a thread trying to acquire the lock waits in a loop + repeatedly checking until the lock becomes available. + + + + Spin locks can be used for leaf-level locks where the object allocation implied by using a , in size or due to garbage collection pressure, is overly + expensive. Avoiding blocking is another reason that a spin lock can be useful, however if you expect + any significant amount of blocking, you are probably best not using spin locks due to excessive + spinning. Spinning can be beneficial when locks are fine grained and large in number (for example, a + lock per node in a linked list) as well as when lock hold times are always extremely short. In + general, while holding a spin lock, one should avoid blocking, calling anything that itself may + block, holding more than one spin lock at once, making dynamically dispatched calls (interface and + virtuals), making statically dispatched calls into any code one doesn't own, or allocating memory. + + + should only be used when it's been determined that doing so will improve an + application's performance. It's also important to note that is a value type, + for performance reasons. As such, one must be very careful not to accidentally copy a SpinLock + instance, as the two instances (the original and the copy) would then be completely independent of + one another, which would likely lead to erroneous behavior of the application. If a SpinLock instance + must be passed around, it should be passed by reference rather than by value. + + + Do not store instances in readonly fields. + + + All members of are thread-safe and may be used from multiple threads + concurrently. + + + + + + Initializes a new instance of the + structure with the option to track thread IDs to improve debugging. + + + The default constructor for tracks thread ownership. + + Whether to capture and use thread IDs for debugging + purposes. + + + + Initializes a new instance of the + structure with the option to track thread IDs to improve debugging. + + + The default constructor for tracks thread ownership. + + + Acquires the lock in a reliable manner, such that even if an exception occurs within the method + call, can be examined reliably to determine whether the lock was + acquired. + + + is a non-reentrant lock, meaning that if a thread holds the lock, it is + not allowed to enter the lock again. If thread ownership tracking is enabled (whether it's + enabled is available through ), an exception will be + thrown when a thread tries to re-enter a lock it already holds. However, if thread ownership + tracking is disabled, attempting to enter a lock already held will result in deadlock. + + True if the lock is acquired; otherwise, false. must be initialized to false prior to calling this method. + + Thread ownership tracking is enabled, and the current thread has already acquired this lock. + + + The argument must be initialized to false prior to calling Enter. + + + + + Attempts to acquire the lock in a reliable manner, such that even if an exception occurs within + the method call, can be examined reliably to determine whether the + lock was acquired. + + + Unlike , TryEnter will not block waiting for the lock to be available. If the + lock is not available when TryEnter is called, it will return immediately without any further + spinning. + + True if the lock is acquired; otherwise, false. must be initialized to false prior to calling this method. + + Thread ownership tracking is enabled, and the current thread has already acquired this lock. + + + The argument must be initialized to false prior to calling TryEnter. + + + + + Attempts to acquire the lock in a reliable manner, such that even if an exception occurs within + the method call, can be examined reliably to determine whether the + lock was acquired. + + + Unlike , TryEnter will not block indefinitely waiting for the lock to be + available. It will block until either the lock is available or until the + has expired. + + A that represents the number of milliseconds + to wait, or a that represents -1 milliseconds to wait indefinitely. + + True if the lock is acquired; otherwise, false. must be initialized to false prior to calling this method. + + Thread ownership tracking is enabled, and the current thread has already acquired this lock. + + + The argument must be initialized to false prior to calling TryEnter. + + is a negative + number other than -1 milliseconds, which represents an infinite time-out -or- timeout is greater + than milliseconds. + + + + + Attempts to acquire the lock in a reliable manner, such that even if an exception occurs within + the method call, can be examined reliably to determine whether the + lock was acquired. + + + Unlike , TryEnter will not block indefinitely waiting for the lock to be + available. It will block until either the lock is available or until the has expired. + + The number of milliseconds to wait, or (-1) to wait indefinitely. + True if the lock is acquired; otherwise, false. must be initialized to false prior to calling this method. + + Thread ownership tracking is enabled, and the current thread has already acquired this lock. + + + The argument must be initialized to false prior to calling TryEnter. + + is + a negative number other than -1, which represents an infinite time-out. + + + + Try acquire the lock with long path, this is usually called after the first path in Enter and + TryEnter failed The reason for short path is to make it inline in the run time which improves the + performance. This method assumed that the parameter are validated in Enter ir TryENter method + + The timeout milliseconds + The lockTaken param + + + + decrements the waiters, in case of the timeout is expired + + + + + ContinueTryEnter for the thread tracking mode enabled + + + + + Helper function to validate the timeout + + The start time in ticks + The orginal wait time + True if expired, false otherwise + + + + Releases the lock. + + + The default overload of provides the same behavior as if calling using true as the argument. + + + Thread ownership tracking is enabled, and the current thread is not the owner of this lock. + + + + + Releases the lock. + + + A Boolean value that indicates whether a memory fence should be issued in order to immediately + publish the exit operation to other threads. + + + Calling with the argument set to + true will improve the fairness of the lock at the expense of some performance. The default + overload behaves as if specifying true for . + + + Thread ownership tracking is enabled, and the current thread is not the owner of this lock. + + + + + Gets whether the lock is currently held by any thread. + + + + + Gets whether the lock is currently held by any thread. + + + Gets whether the lock is held by the current thread. + + + If the lock was initialized to track owner threads, this will return whether the lock is acquired + by the current thread. It is invalid to use this property when the lock was initialized to not + track thread ownership. + + + Thread ownership tracking is disabled. + + + + Gets whether thread ownership tracking is enabled for this instance. + + + + Internal class used by debug type proxy attribute to display the owner thread ID + + + + + SystemThreading_SpinLockDebugView constructor + + The SpinLock to be proxied. + + + + Checks if the lock is held by the current thread or not + + + + + Gets the current owner thread, zero if it is released + + + + + Gets whether the lock is currently held by any thread or not. + + + + + Stores options that configure the operation of methods on the + Parallel class. + + + By default, methods on the Parallel class attempt to utilize all available processors, are non-cancelable, and target + the default TaskScheduler (TaskScheduler.Default). enables + overriding these defaults. + + + + + Initializes a new instance of the class. + + + This constructor initializes the instance with default values. + is initialized to -1, signifying that there is no upper bound set on how much parallelism should + be employed. is initialized to a non-cancelable token, + and is initialized to the default scheduler (TaskScheduler.Default). + All of these defaults may be overwritten using the property set accessors on the instance. + + + + + Gets or sets the TaskScheduler + associated with this instance. Setting this property to null + indicates that the current scheduler should be used. + + + + + Gets or sets the maximum degree of parallelism enabled by this ParallelOptions instance. + + + The limits the number of concurrent operations run by Parallel method calls that are passed this + ParallelOptions instance to the set value, if it is positive. If is -1, then there is no limit placed on the number of concurrently + running operations. + + + The exception that is thrown when this is set to 0 or some + value less than -1. + + + + + Gets or sets the CancellationToken + associated with this instance. + + + Providing a CancellationToken + to a Parallel method enables the operation to be + exited early. Code external to the operation may cancel the token, and if the operation observes the + token being set, it may exit early by throwing an + . + + + + + Provides support for parallel loops and regions. + + + The class provides library-based data parallel replacements + for common operations such as for loops, for each loops, and execution of a set of statements. + + + + + Executes each of the provided actions, possibly in parallel. + + An array of Actions to execute. + The exception that is thrown when the + argument is null. + The exception that is thrown when the + array contains a null element. + The exception that is thrown when any + action in the array throws an exception. + + This method can be used to execute a set of operations, potentially in parallel. + No guarantees are made about the order in which the operations execute or whether + they execute in parallel. This method does not return until each of the + provided operations has completed, regardless of whether completion + occurs due to normal or exceptional termination. + + + + + Executes each of the provided actions, possibly in parallel. + + A ParallelOptions + instance that configures the behavior of this operation. + An array of Actions to execute. + The exception that is thrown when the + argument is null. + The exception that is thrown when the + argument is null. + The exception that is thrown when the + array contains a null element. + The exception that is thrown when + the CancellationToken in the + is set. + The exception that is thrown when any + action in the array throws an exception. + The exception that is thrown when the + the CancellationTokenSource associated with the + the CancellationToken in the + has been disposed. + + This method can be used to execute a set of operations, potentially in parallel. + No guarantees are made about the order in which the operations execute or whether + the they execute in parallel. This method does not return until each of the + provided operations has completed, regardless of whether completion + occurs due to normal or exceptional termination. + + + + + Executes a for loop in which iterations may run in parallel. + + The start index, inclusive. + The end index, exclusive. + The delegate that is invoked once per iteration. + The exception that is thrown when the + argument is null. + The exception that is thrown to contain an exception + thrown from one of the specified delegates. + A ParallelLoopResult structure + that contains information on what portion of the loop completed. + + The delegate is invoked once for each value in the iteration range: + [fromInclusive, toExclusive). It is provided with the iteration count (an Int32) as a parameter. + + + + + Executes a for loop in which iterations may run in parallel. + + The start index, inclusive. + The end index, exclusive. + The delegate that is invoked once per iteration. + The exception that is thrown when the + argument is null. + The exception that is thrown to contain an exception + thrown from one of the specified delegates. + A ParallelLoopResult structure + that contains information on what portion of the loop completed. + + The delegate is invoked once for each value in the iteration range: + [fromInclusive, toExclusive). It is provided with the iteration count (an Int64) as a parameter. + + + + + Executes a for loop in which iterations may run in parallel. + + The start index, inclusive. + The end index, exclusive. + A ParallelOptions + instance that configures the behavior of this operation. + The delegate that is invoked once per iteration. + The exception that is thrown when the + argument is null. + The exception that is thrown when the + argument is null. + The exception that is thrown when the + CancellationToken in the + argument is set. + The exception that is thrown to contain an exception + thrown from one of the specified delegates. + The exception that is thrown when the + the CancellationTokenSource associated with the + the CancellationToken in the + has been disposed. + A ParallelLoopResult structure + that contains information on what portion of the loop completed. + + The delegate is invoked once for each value in the iteration range: + [fromInclusive, toExclusive). It is provided with the iteration count (an Int32) as a parameter. + + + + + Executes a for loop in which iterations may run in parallel. + + The start index, inclusive. + The end index, exclusive. + A ParallelOptions + instance that configures the behavior of this operation. + The delegate that is invoked once per iteration. + The exception that is thrown when the + argument is null. + The exception that is thrown when the + argument is null. + The exception that is thrown when the + CancellationToken in the + argument is set. + The exception that is thrown to contain an exception + thrown from one of the specified delegates. + The exception that is thrown when the + the CancellationTokenSource associated with the + the CancellationToken in the + has been disposed. + A ParallelLoopResult structure + that contains information on what portion of the loop completed. + + The delegate is invoked once for each value in the iteration range: + [fromInclusive, toExclusive). It is provided with the iteration count (an Int64) as a parameter. + + + + + Executes a for loop in which iterations may run in parallel. + + The start index, inclusive. + The end index, exclusive. + The delegate that is invoked once per iteration. + The exception that is thrown when the + argument is null. + The exception that is thrown to contain an exception + thrown from one of the specified delegates. + A ParallelLoopResult structure + that contains information on what portion of the loop completed. + + + The delegate is invoked once for each value in the iteration range: + [fromInclusive, toExclusive). It is provided with the following parameters: the iteration count (an Int32), + and a ParallelLoopState instance that may be + used to break out of the loop prematurely. + + + Calling ParallelLoopState.Break() + informs the For operation that iterations after the current one need not + execute. However, all iterations before the current one will still need to be executed if they have not already. + Therefore, calling Break is similar to using a break operation within a + conventional for loop in a language like C#, but it is not a perfect substitute: for example, there is no guarantee that iterations + after the current one will definitely not execute. + + + If executing all iterations before the current one is not necessary, + ParallelLoopState.Stop() + should be preferred to using Break. Calling Stop informs the For loop that it may abandon all remaining + iterations, regardless of whether they're for interations above or below the current, + since all required work has already been completed. As with Break, however, there are no guarantees regarding + which other iterations will not execute. + + + When a loop is ended prematurely, the that's returned will contain + relevant information about the loop's completion. + + + + + + Executes a for loop in which iterations may run in parallel. + + The start index, inclusive. + The end index, exclusive. + The delegate that is invoked once per iteration. + The exception that is thrown when the + argument is null. + The exception that is thrown to contain an exception + thrown from one of the specified delegates. + A ParallelLoopResult structure + that contains information on what portion of the loop completed. + + The delegate is invoked once for each value in the iteration range: + [fromInclusive, toExclusive). It is provided with the following parameters: the iteration count (an Int64), + and a ParallelLoopState instance that may be + used to break out of the loop prematurely. + + + + + Executes a for loop in which iterations may run in parallel. + + The start index, inclusive. + The end index, exclusive. + A ParallelOptions + instance that configures the behavior of this operation. + The delegate that is invoked once per iteration. + The exception that is thrown when the + argument is null. + The exception that is thrown when the + argument is null. + The exception that is thrown when the + CancellationToken in the + argument is set. + The exception that is thrown to contain an exception + thrown from one of the specified delegates. + The exception that is thrown when the + the CancellationTokenSource associated with the + the CancellationToken in the + has been disposed. + A ParallelLoopResult structure + that contains information on what portion of the loop completed. + + The delegate is invoked once for each value in the iteration range: + [fromInclusive, toExclusive). It is provided with the following parameters: the iteration count (an Int32), + and a ParallelLoopState instance that may be + used to break out of the loop prematurely. + + + + + Executes a for loop in which iterations may run in parallel. + + The start index, inclusive. + The end index, exclusive. + A ParallelOptions + instance that configures the behavior of this operation. + The delegate that is invoked once per iteration. + The exception that is thrown when the + argument is null. + The exception that is thrown when the + argument is null. + The exception that is thrown when the + CancellationToken in the + argument is set. + The exception that is thrown to contain an exception + thrown from one of the specified delegates. + The exception that is thrown when the + the CancellationTokenSource associated with the + the CancellationToken in the + has been disposed. + A ParallelLoopResult structure + that contains information on what portion of the loop completed. + + The delegate is invoked once for each value in the iteration range: + [fromInclusive, toExclusive). It is provided with the following parameters: the iteration count (an Int64), + and a ParallelLoopState instance that may be + used to break out of the loop prematurely. + + + + + Executes a for loop in which iterations may run in parallel. + + The type of the thread-local data. + The start index, inclusive. + The end index, exclusive. + The function delegate that returns the initial state of the local data + for each thread. + The delegate that is invoked once per iteration. + The delegate that performs a final action on the local state of each + thread. + The exception that is thrown when the + argument is null. + The exception that is thrown when the + argument is null. + The exception that is thrown when the + argument is null. + The exception that is thrown to contain an exception + thrown from one of the specified delegates. + A ParallelLoopResult structure + that contains information on what portion of the loop completed. + + + The delegate is invoked once for each value in the iteration range: + [fromInclusive, toExclusive). It is provided with the following parameters: the iteration count (an Int32), + a ParallelLoopState instance that may be + used to break out of the loop prematurely, and some local state that may be shared amongst iterations + that execute on the same thread. + + + The delegate is invoked once for each thread that participates in the loop's + execution and returns the initial local state for each of those threads. These initial states are passed to the first + invocations on each thread. Then, every subsequent body invocation returns a possibly + modified state value that is passed to the next body invocation. Finally, the last body invocation on each thread returns a state value + that is passed to the delegate. The localFinally delegate is invoked once per thread to perform a final + action on each thread's local state. + + + + + + Executes a for loop in which iterations may run in parallel. Supports 64-bit indices. + + The type of the thread-local data. + The start index, inclusive. + The end index, exclusive. + The function delegate that returns the initial state of the local data + for each thread. + The delegate that is invoked once per iteration. + The delegate that performs a final action on the local state of each + thread. + The exception that is thrown when the + argument is null. + The exception that is thrown when the + argument is null. + The exception that is thrown when the + argument is null. + The exception that is thrown to contain an exception + thrown from one of the specified delegates. + A ParallelLoopResult structure + that contains information on what portion of the loop completed. + + + The delegate is invoked once for each value in the iteration range: + [fromInclusive, toExclusive). It is provided with the following parameters: the iteration count (an Int64), + a ParallelLoopState instance that may be + used to break out of the loop prematurely, and some local state that may be shared amongst iterations + that execute on the same thread. + + + The delegate is invoked once for each thread that participates in the loop's + execution and returns the initial local state for each of those threads. These initial states are passed to the first + invocations on each thread. Then, every subsequent body invocation returns a possibly + modified state value that is passed to the next body invocation. Finally, the last body invocation on each thread returns a state value + that is passed to the delegate. The localFinally delegate is invoked once per thread to perform a final + action on each thread's local state. + + + + + + Executes a for loop in which iterations may run in parallel. + + The type of the thread-local data. + The start index, inclusive. + The end index, exclusive. + A ParallelOptions + instance that configures the behavior of this operation. + The function delegate that returns the initial state of the local data + for each thread. + The delegate that is invoked once per iteration. + The delegate that performs a final action on the local state of each + thread. + The exception that is thrown when the + argument is null. + The exception that is thrown when the + argument is null. + The exception that is thrown when the + argument is null. + The exception that is thrown when the + argument is null. + The exception that is thrown when the + CancellationToken in the + argument is set. + The exception that is thrown to contain an exception + thrown from one of the specified delegates. + The exception that is thrown when the + the CancellationTokenSource associated with the + the CancellationToken in the + has been disposed. + A ParallelLoopResult structure + that contains information on what portion of the loop completed. + + + The delegate is invoked once for each value in the iteration range: + [fromInclusive, toExclusive). It is provided with the following parameters: the iteration count (an Int32), + a ParallelLoopState instance that may be + used to break out of the loop prematurely, and some local state that may be shared amongst iterations + that execute on the same thread. + + + The delegate is invoked once for each thread that participates in the loop's + execution and returns the initial local state for each of those threads. These initial states are passed to the first + invocations on each thread. Then, every subsequent body invocation returns a possibly + modified state value that is passed to the next body invocation. Finally, the last body invocation on each thread returns a state value + that is passed to the delegate. The localFinally delegate is invoked once per thread to perform a final + action on each thread's local state. + + + + + + Executes a for loop in which iterations may run in parallel. + + The type of the thread-local data. + The start index, inclusive. + The end index, exclusive. + A ParallelOptions + instance that configures the behavior of this operation. + The function delegate that returns the initial state of the local data + for each thread. + The delegate that is invoked once per iteration. + The delegate that performs a final action on the local state of each + thread. + The exception that is thrown when the + argument is null. + The exception that is thrown when the + argument is null. + The exception that is thrown when the + argument is null. + The exception that is thrown when the + argument is null. + The exception that is thrown when the + CancellationToken in the + argument is set. + The exception that is thrown to contain an exception + thrown from one of the specified delegates. + The exception that is thrown when the + the CancellationTokenSource associated with the + the CancellationToken in the + has been disposed. + A ParallelLoopResult structure + that contains information on what portion of the loop completed. + + + The delegate is invoked once for each value in the iteration range: + [fromInclusive, toExclusive). It is provided with the following parameters: the iteration count (an Int64), + a ParallelLoopState instance that may be + used to break out of the loop prematurely, and some local state that may be shared amongst iterations + that execute on the same thread. + + + The delegate is invoked once for each thread that participates in the loop's + execution and returns the initial local state for each of those threads. These initial states are passed to the first + invocations on each thread. Then, every subsequent body invocation returns a possibly + modified state value that is passed to the next body invocation. Finally, the last body invocation on each thread returns a state value + that is passed to the delegate. The localFinally delegate is invoked once per thread to perform a final + action on each thread's local state. + + + + + + Performs the major work of the parallel for loop. It assumes that argument validation has already + been performed by the caller. This function's whole purpose in life is to enable as much reuse of + common implementation details for the various For overloads we offer. Without it, we'd end up + with lots of duplicate code. It handles: (1) simple for loops, (2) for loops that depend on + ParallelState, and (3) for loops with thread local data. + + @TODO: at some point in the future, we may want to manually inline the interesting bits into the + specific overloads above. There is some overhead associated with the extra arguments passed to + the function, and various if-checks in the code. It is also more difficult to follow what the + code does as-is because it has to handle the three flavors. + + The type of the local data. + The loop's start index, inclusive. + The loop's end index, exclusive. + A ParallelOptions instance. + The simple loop body. + The loop body for ParallelState overloads. + The loop body for thread local state overloads. + A selector function that returns new thread local state. + A cleanup function to destroy thread local state. + Only one of the body arguments may be supplied (i.e. they are exclusive). + A structure. + + + + Performs the major work of the 64-bit parallel for loop. It assumes that argument validation has already + been performed by the caller. This function's whole purpose in life is to enable as much reuse of + common implementation details for the various For overloads we offer. Without it, we'd end up + with lots of duplicate code. It handles: (1) simple for loops, (2) for loops that depend on + ParallelState, and (3) for loops with thread local data. + + @TODO: at some point in the future, we may want to manually inline the interesting bits into the + specific overloads above. There is some overhead associated with the extra arguments passed to + the function, and various if-checks in the code. It is also more difficult to follow what the + code does as-is because it has to handle the three flavors. + + The type of the local data. + The loop's start index, inclusive. + The loop's end index, exclusive. + A ParallelOptions instance. + The simple loop body. + The loop body for ParallelState overloads. + The loop body for thread local state overloads. + A selector function that returns new thread local state. + A cleanup function to destroy thread local state. + Only one of the body arguments may be supplied (i.e. they are exclusive). + A structure. + + + + Executes a for each operation on an + in which iterations may run in parallel. + + The type of the data in the source. + An enumerable data source. + The delegate that is invoked once per iteration. + The exception that is thrown when the + argument is null. + The exception that is thrown when the + argument is null. + The exception that is thrown to contain an exception + thrown from one of the specified delegates. + A ParallelLoopResult structure + that contains information on what portion of the loop completed. + + The delegate is invoked once for each element in the + enumerable. It is provided with the current element as a parameter. + + + + + Executes a for each operation on an + in which iterations may run in parallel. + + The type of the data in the source. + An enumerable data source. + A ParallelOptions + instance that configures the behavior of this operation. + The delegate that is invoked once per iteration. + The exception that is thrown when the + argument is null. + The exception that is thrown when the + argument is null. + The exception that is thrown when the + argument is null. + The exception that is thrown when the + CancellationToken in the + argument is set + The exception that is thrown to contain an exception + thrown from one of the specified delegates. + The exception that is thrown when the + the CancellationTokenSource associated with the + the CancellationToken in the + has been disposed. + A ParallelLoopResult structure + that contains information on what portion of the loop completed. + + The delegate is invoked once for each element in the + enumerable. It is provided with the current element as a parameter. + + + + + Executes a for each operation on an + in which iterations may run in parallel. + + The type of the data in the source. + An enumerable data source. + The delegate that is invoked once per iteration. + The exception that is thrown when the + argument is null. + The exception that is thrown when the + argument is null. + The exception that is thrown to contain an exception + thrown from one of the specified delegates. + A ParallelLoopResult structure + that contains information on what portion of the loop completed. + + The delegate is invoked once for each element in the + enumerable. It is provided with the following parameters: the current element, + and a ParallelLoopState instance that may be + used to break out of the loop prematurely. + + + + + Executes a for each operation on an + in which iterations may run in parallel. + + The type of the data in the source. + An enumerable data source. + A ParallelOptions + instance that configures the behavior of this operation. + The delegate that is invoked once per iteration. + The exception that is thrown when the + argument is null. + The exception that is thrown when the + argument is null. + The exception that is thrown when the + argument is null. + The exception that is thrown when the + CancellationToken in the + argument is set + The exception that is thrown to contain an exception + thrown from one of the specified delegates. + The exception that is thrown when the + the CancellationTokenSource associated with the + the CancellationToken in the + has been disposed. + A ParallelLoopResult structure + that contains information on what portion of the loop completed. + + The delegate is invoked once for each element in the + enumerable. It is provided with the following parameters: the current element, + and a ParallelLoopState instance that may be + used to break out of the loop prematurely. + + + + + Executes a for each operation on an + in which iterations may run in parallel. + + The type of the data in the source. + An enumerable data source. + The delegate that is invoked once per iteration. + The exception that is thrown when the + argument is null. + The exception that is thrown when the + argument is null. + The exception that is thrown to contain an exception + thrown from one of the specified delegates. + A ParallelLoopResult structure + that contains information on what portion of the loop completed. + + The delegate is invoked once for each element in the + enumerable. It is provided with the following parameters: the current element, + a ParallelLoopState instance that may be + used to break out of the loop prematurely, and the current element's index (an Int64). + + + + + Executes a for each operation on an + in which iterations may run in parallel. + + The type of the data in the source. + An enumerable data source. + A ParallelOptions + instance that configures the behavior of this operation. + The delegate that is invoked once per iteration. + The exception that is thrown when the + argument is null. + The exception that is thrown when the + argument is null. + The exception that is thrown when the + argument is null. + The exception that is thrown when the + CancellationToken in the + argument is set + The exception that is thrown to contain an exception + thrown from one of the specified delegates. + The exception that is thrown when the + the CancellationTokenSource associated with the + the CancellationToken in the + has been disposed. + A ParallelLoopResult structure + that contains information on what portion of the loop completed. + + The delegate is invoked once for each element in the + enumerable. It is provided with the following parameters: the current element, + a ParallelLoopState instance that may be + used to break out of the loop prematurely, and the current element's index (an Int64). + + + + + Executes a for each operation on an + in which iterations may run in parallel. + + The type of the data in the source. + The type of the thread-local data. + An enumerable data source. + The function delegate that returns the initial state of the local data + for each thread. + The delegate that is invoked once per iteration. + The delegate that performs a final action on the local state of each + thread. + The exception that is thrown when the + argument is null. + The exception that is thrown when the + argument is null. + The exception that is thrown when the + argument is null. + The exception that is thrown when the + argument is null. + The exception that is thrown to contain an exception + thrown from one of the specified delegates. + A ParallelLoopResult structure + that contains information on what portion of the loop completed. + + + The delegate is invoked once for each element in the + enumerable. It is provided with the following parameters: the current element, + a ParallelLoopState instance that may be + used to break out of the loop prematurely, and some local state that may be shared amongst iterations + that execute on the same thread. + + + The delegate is invoked once for each thread that participates in the loop's + execution and returns the initial local state for each of those threads. These initial states are passed to the first + invocations on each thread. Then, every subsequent body invocation returns a possibly + modified state value that is passed to the next body invocation. Finally, the last body invocation on each thread returns a state value + that is passed to the delegate. The localFinally delegate is invoked once per thread to perform a final + action on each thread's local state. + + + + + + Executes a for each operation on an + in which iterations may run in parallel. + + The type of the data in the source. + The type of the thread-local data. + An enumerable data source. + A ParallelOptions + instance that configures the behavior of this operation. + The function delegate that returns the initial state of the local data + for each thread. + The delegate that is invoked once per iteration. + The delegate that performs a final action on the local state of each + thread. + The exception that is thrown when the + argument is null. + The exception that is thrown when the + argument is null. + The exception that is thrown when the + argument is null. + The exception that is thrown when the + argument is null. + The exception that is thrown when the + argument is null. + The exception that is thrown when the + CancellationToken in the + argument is set + The exception that is thrown to contain an exception + thrown from one of the specified delegates. + The exception that is thrown when the + the CancellationTokenSource associated with the + the CancellationToken in the + has been disposed. + A ParallelLoopResult structure + that contains information on what portion of the loop completed. + + + The delegate is invoked once for each element in the + enumerable. It is provided with the following parameters: the current element, + a ParallelLoopState instance that may be + used to break out of the loop prematurely, and some local state that may be shared amongst iterations + that execute on the same thread. + + + The delegate is invoked once for each thread that participates in the loop's + execution and returns the initial local state for each of those threads. These initial states are passed to the first + invocations on each thread. Then, every subsequent body invocation returns a possibly + modified state value that is passed to the next body invocation. Finally, the last body invocation on each thread returns a state value + that is passed to the delegate. The localFinally delegate is invoked once per thread to perform a final + action on each thread's local state. + + + + + + Executes a for each operation on an + in which iterations may run in parallel. + + The type of the data in the source. + The type of the thread-local data. + An enumerable data source. + The function delegate that returns the initial state of the local data + for each thread. + The delegate that is invoked once per iteration. + The delegate that performs a final action on the local state of each + thread. + The exception that is thrown when the + argument is null. + The exception that is thrown when the + argument is null. + The exception that is thrown when the + argument is null. + The exception that is thrown when the + argument is null. + The exception that is thrown to contain an exception + thrown from one of the specified delegates. + A ParallelLoopResult structure + that contains information on what portion of the loop completed. + + + The delegate is invoked once for each element in the + enumerable. It is provided with the following parameters: the current element, + a ParallelLoopState instance that may be + used to break out of the loop prematurely, the current element's index (an Int64), and some local + state that may be shared amongst iterations that execute on the same thread. + + + The delegate is invoked once for each thread that participates in the loop's + execution and returns the initial local state for each of those threads. These initial states are passed to the first + invocations on each thread. Then, every subsequent body invocation returns a possibly + modified state value that is passed to the next body invocation. Finally, the last body invocation on each thread returns a state value + that is passed to the delegate. The localFinally delegate is invoked once per thread to perform a final + action on each thread's local state. + + + + + + Executes a for each operation on an + in which iterations may run in parallel. + + The type of the data in the source. + The type of the thread-local data. + An enumerable data source. + A ParallelOptions + instance that configures the behavior of this operation. + The function delegate that returns the initial state of the local data + for each thread. + The delegate that is invoked once per iteration. + The delegate that performs a final action on the local state of each + thread. + The exception that is thrown when the + argument is null. + The exception that is thrown when the + argument is null. + The exception that is thrown when the + argument is null. + The exception that is thrown when the + argument is null. + The exception that is thrown when the + argument is null. + The exception that is thrown when the + CancellationToken in the + argument is set + The exception that is thrown to contain an exception + thrown from one of the specified delegates. + The exception that is thrown when the + the CancellationTokenSource associated with the + the CancellationToken in the + has been disposed. + A ParallelLoopResult structure + that contains information on what portion of the loop completed. + + + The delegate is invoked once for each element in the + enumerable. It is provided with the following parameters: the current element, + a ParallelLoopState instance that may be + used to break out of the loop prematurely, the current element's index (an Int64), and some local + state that may be shared amongst iterations that execute on the same thread. + + + The delegate is invoked once for each thread that participates in the loop's + execution and returns the initial local state for each of those threads. These initial states are passed to the first + invocations on each thread. Then, every subsequent body invocation returns a possibly + modified state value that is passed to the next body invocation. Finally, the last body invocation on each thread returns a state value + that is passed to the delegate. The localFinally delegate is invoked once per thread to perform a final + action on each thread's local state. + + + + + + Performs the major work of the parallel foreach loop. It assumes that argument validation has + already been performed by the caller. This function's whole purpose in life is to enable as much + reuse of common implementation details for the various For overloads we offer. Without it, we'd + end up with lots of duplicate code. It handles: (1) simple foreach loops, (2) foreach loops that + depend on ParallelState, and (3) foreach loops that access indices, (4) foreach loops with thread + local data, and any necessary permutations thereof. + + @TODO: at some point in the future, we may want to manually inline the interesting bits into the + specific overloads above. There is some overhead associated with the extra arguments passed to + the function, and various if-checks in the code. It is also more difficult to follow what the + code does as-is because it has to handle the all flavors. + + The type of the source data. + The type of the local data. + An enumerable data source. + ParallelOptions instance to use with this ForEach-loop + The simple loop body. + The loop body for ParallelState overloads. + The loop body for ParallelState/indexed overloads. + The loop body for ParallelState/thread local state overloads. + The loop body for ParallelState/indexed/thread local state overloads. + A selector function that returns new thread local state. + A cleanup function to destroy thread local state. + Only one of the bodyXX arguments may be supplied (i.e. they are exclusive). + A structure. + + + + A fast path for the more general ForEachWorker method above. This uses ldelem instructions to + access the individual elements of the array, which will be faster. + + The type of the source data. + The type of the local data. + An array data source. + The options to use for execution. + The simple loop body. + The loop body for ParallelState overloads. + The loop body for indexed/ParallelLoopState overloads. + The loop body for local/ParallelLoopState overloads. + The loop body for the most generic overload. + A selector function that returns new thread local state. + A cleanup function to destroy thread local state. + A structure. + + + + A fast path for the more general ForEachWorker method above. This uses IList<T>'s indexer + capabilities to access the individual elements of the list rather than an enumerator. + + The type of the source data. + The type of the local data. + A list data source. + The options to use for execution. + The simple loop body. + The loop body for ParallelState overloads. + The loop body for indexed/ParallelLoopState overloads. + The loop body for local/ParallelLoopState overloads. + The loop body for the most generic overload. + A selector function that returns new thread local state. + A cleanup function to destroy thread local state. + A structure. + + + + Executes a for each operation on a + Partitioner in which iterations may run in parallel. + + The type of the elements in . + The Partitioner that contains the original data source. + The delegate that is invoked once per iteration. + The exception that is thrown when the + argument is null. + The exception that is thrown when the + argument is null. + The exception that is thrown when the + SupportsDynamicPartitions property in the Partitioner returns + false. + The exception that is thrown when any + methods in the Partitioner return null. + The exception that is thrown when the + GetPartitions() method in the Partitioner does not return + the correct number of partitions. + The exception that is thrown when the + GetPartitions() method in the Partitioner returns an IList + with at least one null value. + The exception that is thrown when the + GetDynamicPartitions() method in the Partitioner returns an + IEnumerable whose GetEnumerator() method returns null. + The exception that is thrown to contain an exception + thrown from one of the specified delegates. + A ParallelLoopResult structure + that contains information on what portion of the loop completed. + + + The Partitioner is used to retrieve + the elements to be processed, in place of the original data source. If the current element's + index is desired, the source must be an + OrderablePartitioner. + + + The delegate is invoked once for each element in the + Partitioner. It is provided with the current element as a parameter. + + + + + + Executes a for each operation on a + Partitioner in which iterations may run in parallel. + + The type of the elements in . + The Partitioner that contains the original data source. + The delegate that is invoked once per iteration. + The exception that is thrown when the + argument is null. + The exception that is thrown when the + argument is null. + The exception that is thrown when the + SupportsDynamicPartitions property in the Partitioner returns + false. + The exception that is thrown when any + methods in the Partitioner return null. + The exception that is thrown when the + GetPartitions() method in the Partitioner does not return + the correct number of partitions. + The exception that is thrown when the + GetPartitions() method in the Partitioner returns an IList + with at least one null value. + The exception that is thrown when the + GetDynamicPartitions() method in the Partitioner returns an + IEnumerable whose GetEnumerator() method returns null. + The exception that is thrown to contain an exception + thrown from one of the specified delegates. + A ParallelLoopResult structure + that contains information on what portion of the loop completed. + + + The Partitioner is used to retrieve + the elements to be processed, in place of the original data source. If the current element's + index is desired, the source must be an + OrderablePartitioner. + + + The delegate is invoked once for each element in the + Partitioner. It is provided with the following parameters: the current element, + and a ParallelLoopState instance that may be + used to break out of the loop prematurely. + + + + + + Executes a for each operation on a + OrderablePartitioner in which iterations may run in parallel. + + The type of the elements in . + The OrderablePartitioner that contains the original data source. + The delegate that is invoked once per iteration. + The exception that is thrown when the + argument is null. + The exception that is thrown when the + argument is null. + The exception that is thrown when the + SupportsDynamicPartitions property in the OrderablePartitioner returns + false. + The exception that is thrown when the + KeysNormalized property in the OrderablePartitioner returns + false. + The exception that is thrown when any + methods in the OrderablePartitioner return null. + The exception that is thrown when the + GetPartitions() or GetOrderablePartitions() methods in the + OrderablePartitioner do not return the correct number of partitions. + The exception that is thrown when the + GetPartitions() or GetOrderablePartitions() methods in the + OrderablePartitioner return an IList with at least one null value. + The exception that is thrown when the + GetDynamicPartitions() or GetDynamicOrderablePartitions() methods in the + OrderablePartitioner return an IEnumerable whose GetEnumerator() method returns null. + The exception that is thrown to contain an exception + thrown from one of the specified delegates. + A ParallelLoopResult structure + that contains information on what portion of the loop completed. + + + The Partitioner is used to retrieve + the elements to be processed, in place of the original data source. If the current element's + index is desired, the source must be an + OrderablePartitioner. + + + The delegate is invoked once for each element in the + Partitioner. It is provided with the following parameters: the current element, + a ParallelLoopState instance that may be + used to break out of the loop prematurely, and the current element's index (an Int64). + + + + + + Executes a for each operation on a + Partitioner in which iterations may run in parallel. + + The type of the elements in . + The type of the thread-local data. + The Partitioner that contains the original data source. + The function delegate that returns the initial state of the local data + for each thread. + The delegate that is invoked once per iteration. + The delegate that performs a final action on the local state of each + thread. + The exception that is thrown when the + argument is null. + The exception that is thrown when the + argument is null. + The exception that is thrown when the + argument is null. + The exception that is thrown when the + argument is null. + The exception that is thrown when the + SupportsDynamicPartitions property in the Partitioner returns + false. + The exception that is thrown when any + methods in the Partitioner return null. + The exception that is thrown when the + GetPartitions() method in the Partitioner does not return + the correct number of partitions. + The exception that is thrown when the + GetPartitions() method in the Partitioner returns an IList + with at least one null value. + The exception that is thrown when the + GetDynamicPartitions() method in the Partitioner returns an + IEnumerable whose GetEnumerator() method returns null. + The exception that is thrown to contain an exception + thrown from one of the specified delegates. + A ParallelLoopResult structure + that contains information on what portion of the loop completed. + + + The Partitioner is used to retrieve + the elements to be processed, in place of the original data source. If the current element's + index is desired, the source must be an + OrderablePartitioner. + + + The delegate is invoked once for each element in the + Partitioner. It is provided with the following parameters: the current element, + a ParallelLoopState instance that may be + used to break out of the loop prematurely, and some local state that may be shared amongst iterations + that execute on the same thread. + + + The delegate is invoked once for each thread that participates in the loop's + execution and returns the initial local state for each of those threads. These initial states are passed to the first + invocations on each thread. Then, every subsequent body invocation returns a possibly + modified state value that is passed to the next body invocation. Finally, the last body invocation on each thread returns a state value + that is passed to the delegate. The localFinally delegate is invoked once per thread to perform a final + action on each thread's local state. + + + + + + Executes a for each operation on a + OrderablePartitioner in which iterations may run in parallel. + + The type of the elements in . + The type of the thread-local data. + The OrderablePartitioner that contains the original data source. + The function delegate that returns the initial state of the local data + for each thread. + The delegate that is invoked once per iteration. + The delegate that performs a final action on the local state of each + thread. + The exception that is thrown when the + argument is null. + The exception that is thrown when the + argument is null. + The exception that is thrown when the + argument is null. + The exception that is thrown when the + argument is null. + The exception that is thrown when the + SupportsDynamicPartitions property in the OrderablePartitioner returns + false. + The exception that is thrown when the + KeysNormalized property in the OrderablePartitioner returns + false. + The exception that is thrown when any + methods in the OrderablePartitioner return null. + The exception that is thrown when the + GetPartitions() or GetOrderablePartitions() methods in the + OrderablePartitioner do not return the correct number of partitions. + The exception that is thrown when the + GetPartitions() or GetOrderablePartitions() methods in the + OrderablePartitioner return an IList with at least one null value. + The exception that is thrown when the + GetDynamicPartitions() or GetDynamicOrderablePartitions() methods in the + OrderablePartitioner return an IEnumerable whose GetEnumerator() method returns null. + The exception that is thrown to contain an exception + thrown from one of the specified delegates. + A ParallelLoopResult structure + that contains information on what portion of the loop completed. + + + The Partitioner is used to retrieve + the elements to be processed, in place of the original data source. If the current element's + index is desired, the source must be an + OrderablePartitioner. + + + The delegate is invoked once for each element in the + Partitioner. It is provided with the following parameters: the current element, + a ParallelLoopState instance that may be + used to break out of the loop prematurely, the current element's index (an Int64), and some local + state that may be shared amongst iterations that execute on the same thread. + + + The delegate is invoked once for each thread that participates in the loop's + execution and returns the initial local state for each of those threads. These initial states are passed to the first + invocations on each thread. Then, every subsequent body invocation returns a possibly + modified state value that is passed to the next body invocation. Finally, the last body invocation on each thread returns a state value + that is passed to the delegate. The localFinally delegate is invoked once per thread to perform a final + action on each thread's local state. + + + + + + Executes a for each operation on a + Partitioner in which iterations may run in parallel. + + The type of the elements in . + The Partitioner that contains the original data source. + A ParallelOptions + instance that configures the behavior of this operation. + The delegate that is invoked once per iteration. + The exception that is thrown when the + argument is null. + The exception that is thrown when the + argument is null. + The exception that is thrown when the + argument is null. + The exception that is thrown when the + CancellationToken in the + argument is set + The exception that is thrown when the + SupportsDynamicPartitions property in the Partitioner returns + false. + The exception that is thrown when any + methods in the Partitioner return null. + The exception that is thrown when the + GetPartitions() method in the Partitioner does not return + the correct number of partitions. + The exception that is thrown when the + GetPartitions() method in the Partitioner returns an IList + with at least one null value. + The exception that is thrown when the + GetDynamicPartitions() method in the Partitioner returns an + IEnumerable whose GetEnumerator() method returns null. + The exception that is thrown to contain an exception + thrown from one of the specified delegates. + The exception that is thrown when the + the CancellationTokenSource associated with the + the CancellationToken in the + has been disposed. + A ParallelLoopResult structure + that contains information on what portion of the loop completed. + + + The Partitioner is used to retrieve + the elements to be processed, in place of the original data source. If the current element's + index is desired, the source must be an + OrderablePartitioner. + + + The delegate is invoked once for each element in the + Partitioner. It is provided with the current element as a parameter. + + + + + + Executes a for each operation on a + Partitioner in which iterations may run in parallel. + + The type of the elements in . + The Partitioner that contains the original data source. + A ParallelOptions + instance that configures the behavior of this operation. + The delegate that is invoked once per iteration. + The exception that is thrown when the + argument is null. + The exception that is thrown when the + argument is null. + The exception that is thrown when the + argument is null. + The exception that is thrown when the + CancellationToken in the + argument is set + The exception that is thrown when the + SupportsDynamicPartitions property in the Partitioner returns + false. + The exception that is thrown when any + methods in the Partitioner return null. + The exception that is thrown when the + GetPartitions() method in the Partitioner does not return + the correct number of partitions. + The exception that is thrown when the + GetPartitions() method in the Partitioner returns an IList + with at least one null value. + The exception that is thrown when the + GetDynamicPartitions() method in the Partitioner returns an + IEnumerable whose GetEnumerator() method returns null. + The exception that is thrown to contain an exception + thrown from one of the specified delegates. + The exception that is thrown when the + the CancellationTokenSource associated with the + the CancellationToken in the + has been disposed. + A ParallelLoopResult structure + that contains information on what portion of the loop completed. + + + The Partitioner is used to retrieve + the elements to be processed, in place of the original data source. If the current element's + index is desired, the source must be an + OrderablePartitioner. + + + The delegate is invoked once for each element in the + Partitioner. It is provided with the following parameters: the current element, + and a ParallelLoopState instance that may be + used to break out of the loop prematurely. + + + + + + Executes a for each operation on a + OrderablePartitioner in which iterations may run in parallel. + + The type of the elements in . + The OrderablePartitioner that contains the original data source. + A ParallelOptions + instance that configures the behavior of this operation. + The delegate that is invoked once per iteration. + The exception that is thrown when the + argument is null. + The exception that is thrown when the + argument is null. + The exception that is thrown when the + argument is null. + The exception that is thrown when the + CancellationToken in the + argument is set + The exception that is thrown when the + SupportsDynamicPartitions property in the OrderablePartitioner returns + false. + The exception that is thrown when the + KeysNormalized property in the OrderablePartitioner returns + false. + The exception that is thrown when any + methods in the OrderablePartitioner return null. + The exception that is thrown when the + GetPartitions() or GetOrderablePartitions() methods in the + OrderablePartitioner do not return the correct number of partitions. + The exception that is thrown when the + GetPartitions() or GetOrderablePartitions() methods in the + OrderablePartitioner return an IList with at least one null value. + The exception that is thrown when the + GetDynamicPartitions() or GetDynamicOrderablePartitions() methods in the + OrderablePartitioner return an IEnumerable whose GetEnumerator() method returns null. + The exception that is thrown to contain an exception + thrown from one of the specified delegates. + The exception that is thrown when the + the CancellationTokenSource associated with the + the CancellationToken in the + has been disposed. + A ParallelLoopResult structure + that contains information on what portion of the loop completed. + + + The Partitioner is used to retrieve + the elements to be processed, in place of the original data source. If the current element's + index is desired, the source must be an + OrderablePartitioner. + + + The delegate is invoked once for each element in the + Partitioner. It is provided with the following parameters: the current element, + a ParallelLoopState instance that may be + used to break out of the loop prematurely, and the current element's index (an Int64). + + + + + + Executes a for each operation on a + Partitioner in which iterations may run in parallel. + + The type of the elements in . + The type of the thread-local data. + The Partitioner that contains the original data source. + A ParallelOptions + instance that configures the behavior of this operation. + The function delegate that returns the initial state of the local data + for each thread. + The delegate that is invoked once per iteration. + The delegate that performs a final action on the local state of each + thread. + The exception that is thrown when the + argument is null. + The exception that is thrown when the + argument is null. + The exception that is thrown when the + argument is null. + The exception that is thrown when the + argument is null. + The exception that is thrown when the + argument is null. + The exception that is thrown when the + CancellationToken in the + argument is set + The exception that is thrown when the + SupportsDynamicPartitions property in the Partitioner returns + false. + The exception that is thrown when any + methods in the Partitioner return null. + The exception that is thrown when the + GetPartitions() method in the Partitioner does not return + the correct number of partitions. + The exception that is thrown when the + GetPartitions() method in the Partitioner returns an IList + with at least one null value. + The exception that is thrown when the + GetDynamicPartitions() method in the Partitioner returns an + IEnumerable whose GetEnumerator() method returns null. + The exception that is thrown to contain an exception + thrown from one of the specified delegates. + The exception that is thrown when the + the CancellationTokenSource associated with the + the CancellationToken in the + has been disposed. + A ParallelLoopResult structure + that contains information on what portion of the loop completed. + + + The Partitioner is used to retrieve + the elements to be processed, in place of the original data source. If the current element's + index is desired, the source must be an + OrderablePartitioner. + + + The delegate is invoked once for each element in the + Partitioner. It is provided with the following parameters: the current element, + a ParallelLoopState instance that may be + used to break out of the loop prematurely, and some local state that may be shared amongst iterations + that execute on the same thread. + + + The delegate is invoked once for each thread that participates in the loop's + execution and returns the initial local state for each of those threads. These initial states are passed to the first + invocations on each thread. Then, every subsequent body invocation returns a possibly + modified state value that is passed to the next body invocation. Finally, the last body invocation on each thread returns a state value + that is passed to the delegate. The localFinally delegate is invoked once per thread to perform a final + action on each thread's local state. + + + + + + Executes a for each operation on a + OrderablePartitioner in which iterations may run in parallel. + + The type of the elements in . + The type of the thread-local data. + The OrderablePartitioner that contains the original data source. + A ParallelOptions + instance that configures the behavior of this operation. + The function delegate that returns the initial state of the local data + for each thread. + The delegate that is invoked once per iteration. + The delegate that performs a final action on the local state of each + thread. + The exception that is thrown when the + argument is null. + The exception that is thrown when the + argument is null. + The exception that is thrown when the + argument is null. + The exception that is thrown when the + argument is null. + The exception that is thrown when the + argument is null. + The exception that is thrown when the + CancellationToken in the + argument is set + The exception that is thrown when the + SupportsDynamicPartitions property in the OrderablePartitioner returns + false. + The exception that is thrown when the + KeysNormalized property in the OrderablePartitioner returns + false. + The exception that is thrown when any + methods in the OrderablePartitioner return null. + The exception that is thrown when the + GetPartitions() or GetOrderablePartitions() methods in the + OrderablePartitioner do not return the correct number of partitions. + The exception that is thrown when the + GetPartitions() or GetOrderablePartitions() methods in the + OrderablePartitioner return an IList with at least one null value. + The exception that is thrown when the + GetDynamicPartitions() or GetDynamicOrderablePartitions() methods in the + OrderablePartitioner return an IEnumerable whose GetEnumerator() method returns null. + The exception that is thrown to contain an exception + thrown from one of the specified delegates. + The exception that is thrown when the + the CancellationTokenSource associated with the + the CancellationToken in the + has been disposed. + A ParallelLoopResult structure + that contains information on what portion of the loop completed. + + + The Partitioner is used to retrieve + the elements to be processed, in place of the original data source. If the current element's + index is desired, the source must be an + OrderablePartitioner. + + + The delegate is invoked once for each element in the + Partitioner. It is provided with the following parameters: the current element, + a ParallelLoopState instance that may be + used to break out of the loop prematurely, the current element's index (an Int64), and some local + state that may be shared amongst iterations that execute on the same thread. + + + The delegate is invoked once for each thread that participates in the loop's + execution and returns the initial local state for each of those threads. These initial states are passed to the first + invocations on each thread. Then, every subsequent body invocation returns a possibly + modified state value that is passed to the next body invocation. Finally, the last body invocation on each thread returns a state value + that is passed to the delegate. The localFinally delegate is invoked once per thread to perform a final + action on each thread's local state. + + + + + + Internal utility function that implements the OCE filtering behavior for all Parallel.* APIs. + Throws a single OperationCancelledException object with the token if the Exception collection only contains + OperationCancelledExceptions with the given CancellationToken. + + + The exception collection to filter + The CancellationToken expected on all inner exceptions + + + + + Enables iterations of loops to interact with + other iterations. + + + + + Communicates that the loop should cease execution at the system's earliest + convenience. + + + The method was previously called. and may not be used in combination by iterations of the same loop. + + + + may be used to communicate to the loop that no other iterations need be run. + For long-running iterations that may already be executing, causes + to return true for all other iterations of the loop, such that another iteration may check and exit early if it's observed to be true. + + + is typically employed in search-based algorithms, where once a result is found, + no other iterations need be executed. + + + + + + Communicates that the loop should cease execution at the system's earliest + convenience of iterations beyond the current iteration. + + + The method was previously called. and + may not be used in combination by iterations of the same loop. + + + + may be used to communicate to the loop that no other iterations after the + current iteration need be run. For example, if is called from the 100th + iteration of a for loop iterating in parallel from 0 to 1000, all iterations less than 100 should + still be run, but the iterations from 101 through to 1000 are not necessary. + + + For long-running iterations that may already be executing, causes + to be set to the current iteration's index if the current index is less than the current value of + . + + + is typically employed in search-based algorithms where an ordering is + present in the data source. + + + + + + Internal/virtual support for ShouldExitCurrentIteration. + + + + + Gets whether the current iteration of the loop should exit based + on requests made by this or other iterations. + + + When an iteration of a loop calls or , or + when one throws an exception, or when the loop is canceled, the class will proactively + attempt to prohibit additional iterations of the loop from starting execution. + However, there may be cases where it is unable to prevent additional iterations from starting. + It may also be the case that a long-running iteration has already begun execution. In such + cases, iterations may explicitly check the property and + cease execution if the property returns true. + + + + + Gets whether any iteration of the loop has called . + + + + + Gets whether any iteration of the loop has thrown an exception that went unhandled by that + iteration. + + + + + Internal/virtual support for LowestBreakIteration. + + + + + Gets the lowest iteration of the loop from which was called. + + + If no iteration of the loop called , this property will return null. + + + + + Internal constructor to ensure an instance isn't created by users. + + A flag shared among all threads participating + in the execution of a certain loop. + + + + Communicates that parallel tasks should stop when they reach a specified iteration element. + (which is CurrentIteration of the caller). + + Break() called after Stop(). + + This is shared with all other concurrent threads in the system which are participating in the + loop's execution. After calling Break(), no additional iterations will be executed on + the current thread, and other worker threads will execute once they get beyond the calling iteration. + + + + + Tracks the current loop iteration for the owning task. + This is used to compute whether or not the task should + terminate early due to a Break() call. + + + + + Returns true if we should be exiting from the current iteration + due to Stop(), Break() or exception. + + + + + Returns the lowest iteration at which Break() has been called, or + null if Break() has not yet been called. + + + + + Allows independent iterations of a parallel loop to interact with other iterations. + + + + + Internal constructor to ensure an instance isn't created by users. + + A flag shared among all threads participating + in the execution of a certain loop. + + + + Communicates that parallel tasks should stop when they reach a specified iteration element. + (which is CurrentIteration of the caller). + + Break() called after Stop(). + + Atomically sets shared StoppedBroken flag to BROKEN, then atomically sets shared + LowestBreakIteration to CurrentIteration, but only if CurrentIteration is less than + LowestBreakIteration. + + + + + Tracks the current loop iteration for the owning task. + This is used to compute whether or not the task should + terminate early due to a Break() call. + + + + + Returns true if we should be exiting from the current iteration + due to Stop(), Break() or exception. + + + + + Returns the lowest iteration at which Break() has been called, or + null if Break() has not yet been called. + + + + + State information that is common between ParallelStateFlags class + and ParallelStateFlags64 class. + + + + + An internal class used to share accounting information in 32-bit versions + of For()/ForEach() loops. + + + + + Lets the caller know whether or not to prematurely exit the For/ForEach loop. + If this returns true, then exit the loop. Otherwise, keep going. + + The caller's current iteration point + in the loop. + + The loop should exit on any one of the following conditions: + (1) Stop() has been called by one or more tasks. + (2) An exception has been raised by one or more tasks. + (3) Break() has been called by one or more tasks, and + CallerIteration exceeds the (lowest) iteration at which + Break() was called. + (4) The loop was canceled. + + + + + An internal class used to share accounting information in 64-bit versions + of For()/ForEach() loops. + + + + + Lets the caller know whether or not to prematurely exit the For/ForEach loop. + If this returns true, then exit the loop. Otherwise, keep going. + + The caller's current iteration point + in the loop. + + The loop should exit on any one of the following conditions: + (1) Stop() has been called by one or more tasks. + (2) An exception has been raised by one or more tasks. + (3) Break() has been called by one or more tasks, and + CallerIteration exceeds the (lowest) iteration at which + Break() was called. + (4) The loop has been canceled. + + + + + Provides completion status on the execution of a loop. + + + If returns true, then the loop ran to completion, such that all iterations + of the loop were executed. If returns false and returns null, a call to was used to end the loop prematurely. If returns false and returns a non-null integral + value, was used to end the loop prematurely. + + + + + Gets whether the loop ran to completion, such that all iterations of the loop were executed + and the loop didn't receive a request to end prematurely. + + + + + Gets the index of the lowest iteration from which + was called. + + + If was not employed, this property will + return null. + + + + + Utility class for allocating structs as heap variables + + + + + Represents an index range + + + + + The RangeWorker struct wraps the state needed by a task that services the parallel loop + + + + + Initializes a RangeWorker struct + + + + + Implements the core work search algorithm that will be used for this range worker. + + + Usage pattern is: + 1) the thread associated with this rangeworker calls FindNewWork + 2) if we return true, the worker uses the nFromInclusiveLocal and nToExclusiveLocal values + to execute the sequential loop + 3) if we return false it means there is no more work left. It's time to quit. + + + + + 32 bit integer version of FindNewWork. Assumes the ranges were initialized with 32 bit values. + + + + + Represents the entire loop operation, keeping track of workers and ranges. + + + The usage pattern is: + 1) The Parallel loop entry function (ForWorker) creates an instance of this class + 2) Every thread joining to service the parallel loop calls RegisterWorker to grab a + RangeWorker struct to wrap the state it will need to find and execute work, + and they keep interacting with that struct until the end of the loop + + + + Initializes a RangeManager with the given loop parameters, and the desired number of outer ranges + + + + + The function that needs to be called by each new worker thread servicing the parallel loop + in order to get a RangeWorker struct that wraps the state for finding and executing indices + + + + + Represents an asynchronous operation that produces a result at some time in the future. + + + The type of the result produced by this . + + + + instances may be created in a variety of ways. The most common approach is by + using the task's property to retrieve a instance that can be used to create tasks for several + purposes. For example, to create a that runs a function, the factory's StartNew + method may be used: + + // C# + var t = Task<int>.Factory.StartNew(() => GenerateResult()); + - or - + var t = Task.Factory.StartNew(() => GenerateResult()); + + ' Visual Basic + Dim t = Task<int>.Factory.StartNew(Function() GenerateResult()) + - or - + Dim t = Task.Factory.StartNew(Function() GenerateResult()) + + + + The class also provides constructors that initialize the task but that do not + schedule it for execution. For performance reasons, the StartNew method should be the + preferred mechanism for creating and scheduling computational tasks, but for scenarios where creation + and scheduling must be separated, the constructors may be used, and the task's + Start + method may then be used to schedule the task for execution at a later time. + + + All members of , except for + Dispose, are thread-safe + and may be used from multiple threads concurrently. + + + + + + Represents an asynchronous operation. + + + + instances may be created in a variety of ways. The most common approach is by + using the Task type's property to retrieve a instance that can be used to create tasks for several + purposes. For example, to create a that runs an action, the factory's StartNew + method may be used: + + // C# + var t = Task.Factory.StartNew(() => DoAction()); + + ' Visual Basic + Dim t = Task.Factory.StartNew(Function() DoAction()) + + + + The class also provides constructors that initialize the Task but that do not + schedule it for execution. For performance reasons, TaskFactory's StartNew method should be the + preferred mechanism for creating and scheduling computational tasks, but for scenarios where creation + and scheduling must be separated, the constructors may be used, and the task's + method may then be used to schedule the task for execution at a later time. + + + All members of , except for , are thread-safe + and may be used from multiple threads concurrently. + + + For operations that return values, the class + should be used. + + + For developers implementing custom debuggers, several internal and private members of Task may be + useful (these may change from release to release). The Int32 m_taskId field serves as the backing + store for the property, however accessing this field directly from a debugger may be + more efficient than accessing the same value through the property's getter method (the + s_taskIdCounter Int32 counter is used to retrieve the next available ID for a Task). Similarly, the + Int32 m_stateFlags field stores information about the current lifecycle stage of the Task, + information also accessible through the property. The m_action System.Object + field stores a reference to the Task's delegate, and the m_stateObject System.Object field stores the + async state passed to the Task by the developer. Finally, for debuggers that parse stack frames, the + InternalWait method serves a potential marker for when a Task is entering a wait operation. + + + + + + A type initializer that runs with the appropriate permissions. + + + + + Initializes a new with the specified action. + + The delegate that represents the code to execute in the Task. + The argument is null. + + + + Initializes a new with the specified action and CancellationToken. + + The delegate that represents the code to execute in the Task. + The CancellationToken + that will be assigned to the new Task. + The argument is null. + The provided CancellationToken + has already been disposed. + + + + + Initializes a new with the specified action and creation options. + + The delegate that represents the code to execute in the task. + + The TaskCreationOptions used to + customize the Task's behavior. + + + The argument is null. + + + The argument specifies an invalid value for . + + + + + Initializes a new with the specified action and creation options. + + The delegate that represents the code to execute in the task. + The that will be assigned to the new task. + + The TaskCreationOptions used to + customize the Task's behavior. + + + The argument is null. + + + The argument specifies an invalid value for . + + The provided CancellationToken + has already been disposed. + + + + + Initializes a new with the specified action and state. + + The delegate that represents the code to execute in the task. + An object representing data to be used by the action. + + The argument is null. + + + + + Initializes a new with the specified action, state, snd options. + + The delegate that represents the code to execute in the task. + An object representing data to be used by the action. + The that will be assigned to the new task. + + The argument is null. + + The provided CancellationToken + has already been disposed. + + + + + Initializes a new with the specified action, state, snd options. + + The delegate that represents the code to execute in the task. + An object representing data to be used by the action. + + The TaskCreationOptions used to + customize the Task's behavior. + + + The argument is null. + + + The argument specifies an invalid value for . + + + + + Initializes a new with the specified action, state, snd options. + + The delegate that represents the code to execute in the task. + An object representing data to be used by the action. + The that will be assigned to the new task. + + The TaskCreationOptions used to + customize the Task's behavior. + + + The argument is null. + + + The argument specifies an invalid value for . + + The provided CancellationToken + has already been disposed. + + + + + An internal constructor used by the factory methods on task and its descendent(s). + This variant does not capture the ExecutionContext; it is up to the caller to do that. + + An action to execute. + Optional state to pass to the action. + Parent of Task. + A CancellationToken for the task. + A task scheduler under which the task will run. + Options to control its execution. + Internal options to control its execution + + + + Common logic used by the following internal ctors: + Task() + Task(object action, object state, Task parent, TaskCreationOptions options, TaskScheduler taskScheduler) + + ASSUMES THAT m_creatingTask IS ALREADY SET. + + + Action for task to execute. + Object to which to pass to action (may be null) + Task scheduler on which to run thread (only used by continuation tasks). + A CancellationToken for the Task. + Options to customize behavior of Task. + Internal options to customize behavior of Task. + + + + Checks if we registered a CT callback during construction, and deregisters it. + This should be called when we know the registration isn't useful anymore. Specifically from Finish() if the task has completed + successfully or with an exception. + + + + + Captures the ExecutionContext so long as flow isn't suppressed. + + A stack crawl mark pointing to the frame of the caller. + + + + Internal function that will be called by a new child task to add itself to + the children list of the parent (this). + + Since a child task can only be created from the thread executing the action delegate + of this task, reentrancy is neither required nor supported. This should not be called from + anywhere other than the task construction/initialization codepaths. + + + + + Starts the , scheduling it for execution to the current TaskScheduler. + + + A task may only be started and run only once. Any attempts to schedule a task a second time + will result in an exception. + + + The is not in a valid state to be started. It may have already been started, + executed, or canceled, or it may have been created in a manner that doesn't support direct + scheduling. + + + The instance has been disposed. + + + + + Starts the , scheduling it for execution to the specified TaskScheduler. + + + A task may only be started and run only once. Any attempts to schedule a task a second time will + result in an exception. + + + The TaskScheduler with which to associate + and execute this task. + + + The argument is null. + + + The is not in a valid state to be started. It may have already been started, + executed, or canceled, or it may have been created in a manner that doesn't support direct + scheduling. + + + The instance has been disposed. + + + + + Runs the synchronously on the current TaskScheduler. + + + + A task may only be started and run only once. Any attempts to schedule a task a second time will + result in an exception. + + + Tasks executed with will be associated with the current TaskScheduler. + + + If the target scheduler does not support running this Task on the current thread, the Task will + be scheduled for execution on the scheduler, and the current thread will block until the + Task has completed execution. + + + + The is not in a valid state to be started. It may have already been started, + executed, or canceled, or it may have been created in a manner that doesn't support direct + scheduling. + + + The instance has been disposed. + + + + + Runs the synchronously on the scheduler provided. + + + + A task may only be started and run only once. Any attempts to schedule a task a second time will + result in an exception. + + + If the target scheduler does not support running this Task on the current thread, the Task will + be scheduled for execution on the scheduler, and the current thread will block until the + Task has completed execution. + + + + The is not in a valid state to be started. It may have already been started, + executed, or canceled, or it may have been created in a manner that doesn't support direct + scheduling. + + + The instance has been disposed. + + The parameter + is null. + The scheduler on which to attempt to run this task inline. + + + + Throws an exception if the task has been disposed, and hence can no longer be accessed. + + The task has been disposed. + + + + Sets the internal completion event. + + + + + Disposes the , releasing all of its unmanaged resources. + + + Unlike most of the members of , this method is not thread-safe. + Also, may only be called on a that is in one of + the final states: RanToCompletion, + Faulted, or + Canceled. + + + The exception that is thrown if the is not in + one of the final states: RanToCompletion, + Faulted, or + Canceled. + + + + + Disposes the , releasing all of its unmanaged resources. + + + A Boolean value that indicates whether this method is being called due to a call to . + + + Unlike most of the members of , this method is not thread-safe. + + + + + Schedules the task for execution. + + If true, TASK_STATE_STARTED bit is turned on in + an atomic fashion, making sure that TASK_STATE_CANCELED does not get set + underneath us. If false, TASK_STATE_STARTED bit is OR-ed right in. This + allows us to streamline things a bit for StartNew(), where competing cancellations + are not a problem. + + + + Adds an exception to the list of exceptions this task has thrown. + + An object representing either an Exception or a collection of Exceptions. + + + + Returns a list of exceptions by aggregating the holder's contents. Or null if + no exceptions have been thrown. + + Whether to include a TCE if cancelled. + An aggregate exception, or null if no exceptions have been caught. + + + + Throws an aggregate exception if the task contains exceptions. + + + + + Checks whether this is an attached task, and whether we are being called by the parent task. + And sets the TASK_STATE_EXCEPTIONOBSERVEDBYPARENT status flag based on that. + + This is meant to be used internally when throwing an exception, and when WaitAll is gathering + exceptions for tasks it waited on. If this flag gets set, the implicit wait on children + will skip exceptions to prevent duplication. + + This should only be called when this task has completed with an exception + + + + + + Signals completion of this particular task. + + The bUserDelegateExecuted parameter indicates whether this Finish() call comes following the + full execution of the user delegate. + + If bUserDelegateExecuted is false, it mean user delegate wasn't invoked at all (either due to + a cancellation request, or because this task is a promise style Task). In this case, the steps + involving child tasks (i.e. WaitForChildren) will be skipped. + + + + + + FinishStageTwo is to be executed as soon as we known there are no more children to complete. + It can happen i) either on the thread that originally executed this task (if no children were spawned, or they all completed by the time this task's delegate quit) + ii) or on the thread that executed the last child. + + + + + Final stage of the task completion code path. Notifies the parent (if any) that another of its childre are done, and runs continuations. + This function is only separated out from FinishStageTwo because these two operations are also needed to be called from CancellationCleanupLogic() + + + + + This is called by children of this task when they are completed. + + + + + This is to be called just before the task does its final state transition. + It traverses the list of exceptional children, and appends their aggregate exceptions into this one's exception list + + + + + Special purpose Finish() entry point to be used when the task delegate throws a ThreadAbortedException + This makes a note in the state flags so that we avoid any costly synchronous operations in the finish codepath + such as inlined continuations + + + Indicates whether the ThreadAbortException was added to this task's exception holder. + This should always be true except for the case of non-root self replicating task copies. + + Whether the delegate was executed. + + + + Executes the task. This method will only be called once, and handles bookeeping associated with + self-replicating tasks, in addition to performing necessary exception marshaling. + + The task has already been disposed. + + + + IThreadPoolWorkItem override, which is the entry function for this task when the TP scheduler decides to run it. + + + + + + The ThreadPool calls this if a ThreadAbortException is thrown while trying to execute this workitem. This may occur + before Task would otherwise be able to observe it. + + + + + Outermost entry function to execute this task. Handles all aspects of executing a task on the caller thread. + Currently this is called by IThreadPoolWorkItem.ExecuteWorkItem(), and TaskManager.TryExecuteInline. + + + Performs atomic updates to prevent double execution. Should only be set to true + in codepaths servicing user provided TaskSchedulers. The ConcRT or ThreadPool schedulers don't need this. + + + + The actual code which invokes the body of the task. This can be overriden in derived types. + + + + + Alternate InnerInvoke prototype to be called from ExecuteSelfReplicating() so that + the Parallel Debugger can discover the actual task being invoked. + Details: Here, InnerInvoke is actually being called on the rootTask object while we are actually executing the + childTask. And the debugger needs to discover the childTask, so we pass that down as an argument. + The NoOptimization and NoInlining flags ensure that the childTask pointer is retained, and that this + function appears on the callstack. + + + + + + Performs whatever handling is necessary for an unhandled exception. Normally + this just entails adding the exception to the holder object. + + The exception that went unhandled. + + + + Waits for the to complete execution. + + + The was canceled -or- an exception was thrown during + the execution of the . + + + The has been disposed. + + + + + Waits for the to complete execution. + + + A that represents the number of milliseconds to wait, or a that represents -1 milliseconds to wait indefinitely. + + + true if the completed execution within the allotted time; otherwise, false. + + + The was canceled -or- an exception was thrown during the execution of the . + + + is a negative number other than -1 milliseconds, which represents an + infinite time-out -or- timeout is greater than + . + + + The has been disposed. + + + + + Waits for the to complete execution. + + + A to observe while waiting for the task to complete. + + + The was canceled. + + + The was canceled -or- an exception was thrown during the execution of the . + + + The + has been disposed. + + + + + Waits for the to complete execution. + + + The number of milliseconds to wait, or (-1) to + wait indefinitely. + true if the completed execution within the allotted time; otherwise, + false. + + + is a negative number other than -1, which represents an + infinite time-out. + + + The was canceled -or- an exception was thrown during the execution of the . + + + The + has been disposed. + + + + + Waits for the to complete execution. + + + The number of milliseconds to wait, or (-1) to + wait indefinitely. + + + A to observe while waiting for the task to complete. + + + true if the completed execution within the allotted time; otherwise, false. + + + The was canceled -or- an exception was thrown during the execution of the . + + + The + has been disposed. + + + is a negative number other than -1, which represents an + infinite time-out. + + + The was canceled. + + + + + The core wait function, which is only accesible internally. It's meant to be used in places in TPL code where + the current context is known or cached. + + + + + Cancels the . + + Indiactes whether we should only cancel non-invoked tasks. + For the default scheduler this option will only be serviced through TryDequeue. + For custom schedulers we also attempt an atomic state transition. + true if the task was successfully canceled; otherwise, false. + The + has been disposed. + + + + Sets the task's cancellation acknowledged flag. + + + + + Runs all of the continuations, as appropriate. + + + + + Helper function to determine whether the current task is in the state desired by the + continuation kind under evaluation. Three possibilities exist: the task failed with + an unhandled exception (OnFailed), the task was canceled before running (OnAborted), + or the task completed successfully (OnCompletedSuccessfully). Note that the last + one includes completing due to cancellation. + + The continuation options under evaluation. + True if the continuation should be run given the task's current state. + + + + Creates a continuation that executes when the target completes. + + + An action to run when the completes. When run, the delegate will be + passed the completed task as an argument. + + A new continuation . + + The returned will not be scheduled for execution until the current task has + completed, whether it completes due to running to completion successfully, faulting due to an + unhandled exception, or exiting out early due to being canceled. + + + The argument is null. + + + The has been disposed. + + + + + Creates a continuation that executes when the target completes. + + + An action to run when the completes. When run, the delegate will be + passed the completed task as an argument. + + The that will be assigned to the new continuation task. + A new continuation . + + The returned will not be scheduled for execution until the current task has + completed, whether it completes due to running to completion successfully, faulting due to an + unhandled exception, or exiting out early due to being canceled. + + + The argument is null. + + + The has been disposed. + + The provided CancellationToken + has already been disposed. + + + + + Creates a continuation that executes when the target completes. + + + An action to run when the completes. When run, the delegate will be + passed the completed task as an argument. + + + The to associate with the continuation task and to use for its execution. + + A new continuation . + + The returned will not be scheduled for execution until the current task has + completed, whether it completes due to running to completion successfully, faulting due to an + unhandled exception, or exiting out early due to being canceled. + + + The argument is null. + + + The argument is null. + + + The has been disposed. + + + + + Creates a continuation that executes when the target completes. + + + An action to run when the completes. When run, the delegate will be + passed the completed task as an argument. + + + Options for when the continuation is scheduled and how it behaves. This includes criteria, such + as OnlyOnCanceled, as + well as execution options, such as ExecuteSynchronously. + + A new continuation . + + The returned will not be scheduled for execution until the current task has + completed. If the continuation criteria specified through the parameter are not met, the continuation task will be canceled + instead of scheduled. + + + The argument is null. + + + The argument specifies an invalid value for TaskContinuationOptions. + + + The has been disposed. + + + + + Creates a continuation that executes when the target completes. + + + An action to run when the completes. When run, the delegate will be + passed the completed task as an argument. + + + Options for when the continuation is scheduled and how it behaves. This includes criteria, such + as OnlyOnCanceled, as + well as execution options, such as ExecuteSynchronously. + + The that will be assigned to the new continuation task. + + The to associate with the continuation task and to use for its + execution. + + A new continuation . + + The returned will not be scheduled for execution until the current task has + completed. If the criteria specified through the parameter + are not met, the continuation task will be canceled instead of scheduled. + + + The argument is null. + + + The argument specifies an invalid value for TaskContinuationOptions. + + + The argument is null. + + + The has been disposed. + + The provided CancellationToken + has already been disposed. + + + + + Creates a continuation that executes when the target completes. + + + The type of the result produced by the continuation. + + + A function to run when the completes. When run, the delegate will be + passed the completed task as an argument. + + A new continuation . + + The returned will not be scheduled for execution until the current task has + completed, whether it completes due to running to completion successfully, faulting due to an + unhandled exception, or exiting out early due to being canceled. + + + The argument is null. + + + The has been disposed. + + + + + Creates a continuation that executes when the target completes. + + + The type of the result produced by the continuation. + + + A function to run when the completes. When run, the delegate will be + passed the completed task as an argument. + + The that will be assigned to the new continuation task. + A new continuation . + + The returned will not be scheduled for execution until the current task has + completed, whether it completes due to running to completion successfully, faulting due to an + unhandled exception, or exiting out early due to being canceled. + + + The argument is null. + + + The has been disposed. + + The provided CancellationToken + has already been disposed. + + + + + Creates a continuation that executes when the target completes. + + + The type of the result produced by the continuation. + + + A function to run when the completes. When run, the delegate will be + passed the completed task as an argument. + + + The to associate with the continuation task and to use for its execution. + + A new continuation . + + The returned will not be scheduled for execution until the current task has + completed, whether it completes due to running to completion successfully, faulting due to an + unhandled exception, or exiting out early due to being canceled. + + + The argument is null. + + + The argument is null. + + + The has been disposed. + + + + + Creates a continuation that executes when the target completes. + + + The type of the result produced by the continuation. + + + A function to run when the completes. When run, the delegate will be + passed the completed task as an argument. + + + Options for when the continuation is scheduled and how it behaves. This includes criteria, such + as OnlyOnCanceled, as + well as execution options, such as ExecuteSynchronously. + + A new continuation . + + The returned will not be scheduled for execution until the current task has + completed. If the continuation criteria specified through the parameter are not met, the continuation task will be canceled + instead of scheduled. + + + The argument is null. + + + The argument specifies an invalid value for TaskContinuationOptions. + + + The has been disposed. + + + + + Creates a continuation that executes when the target completes. + + + The type of the result produced by the continuation. + + + A function to run when the completes. When run, the delegate will be + passed the completed task as an argument. + + The that will be assigned to the new continuation task. + + Options for when the continuation is scheduled and how it behaves. This includes criteria, such + as OnlyOnCanceled, as + well as execution options, such as ExecuteSynchronously. + + + The to associate with the continuation task and to use for its + execution. + + A new continuation . + + The returned will not be scheduled for execution until the current task has + completed. If the criteria specified through the parameter + are not met, the continuation task will be canceled instead of scheduled. + + + The argument is null. + + + The argument specifies an invalid value for TaskContinuationOptions. + + + The argument is null. + + + The has been disposed. + + The provided CancellationToken + has already been disposed. + + + + + Converts TaskContinuationOptions to TaskCreationOptions, and also does + some validity checking along the way. + + Incoming TaskContinuationOptions + Outgoing TaskCreationOptions + Outgoing InternalTaskOptions + + + + Registers the continuation and possibly runs it (if the task is already finished). + + The continuation task itself. + TaskScheduler with which to associate continuation task. + Restrictions on when the continuation becomes active. + + + + Waits for all of the provided objects to complete execution. + + + An array of instances on which to wait. + + + The argument is null. + + + The argument contains a null element. + + + At least one of the instances was canceled -or- an exception was thrown during + the execution of at least one of the instances. + + + The has been disposed. + + + + + Waits for all of the provided objects to complete execution. + + + true if all of the instances completed execution within the allotted time; + otherwise, false. + + + An array of instances on which to wait. + + + A that represents the number of milliseconds to wait, or a that represents -1 milliseconds to wait indefinitely. + + + The argument is null. + + + The argument contains a null element. + + + At least one of the instances was canceled -or- an exception was thrown during + the execution of at least one of the instances. + + + is a negative number other than -1 milliseconds, which represents an + infinite time-out -or- timeout is greater than + . + + + The has been disposed. + + + + + Waits for all of the provided objects to complete execution. + + + true if all of the instances completed execution within the allotted time; + otherwise, false. + + + The number of milliseconds to wait, or (-1) to + wait indefinitely. + An array of instances on which to wait. + + + The argument is null. + + + The argument contains a null element. + + + At least one of the instances was canceled -or- an exception was thrown during + the execution of at least one of the instances. + + + The has been disposed. + + + is a negative number other than -1, which represents an + infinite time-out. + + + + + Waits for all of the provided objects to complete execution. + + + true if all of the instances completed execution within the allotted time; + otherwise, false. + + + An array of instances on which to wait. + + + A to observe while waiting for the tasks to complete. + + + The argument is null. + + + The argument contains a null element. + + + At least one of the instances was canceled -or- an exception was thrown during + the execution of at least one of the instances. + + + The was canceled. + + + The has been disposed. + + + + + Waits for all of the provided objects to complete execution. + + + true if all of the instances completed execution within the allotted time; + otherwise, false. + + + An array of instances on which to wait. + + + The number of milliseconds to wait, or (-1) to + wait indefinitely. + + + A to observe while waiting for the tasks to complete. + + + The argument is null. + + + The argument contains a null element. + + + At least one of the instances was canceled -or- an exception was thrown during + the execution of at least one of the instances. + + + The has been disposed. + + + is a negative number other than -1, which represents an + infinite time-out. + + + The was canceled. + + + + + Waits for a set of handles in a STA-aware way. In other words, it will wait for each + of the events individually if we're on a STA thread, because MsgWaitForMultipleObjectsEx + can't do a true wait-all due to its hidden message queue event. This is not atomic, + of course, but we only wait on one-way (MRE) events anyway so this is OK. + + An array of wait handles to wait on. + The timeout to use during waits. + The cancellationToken that enables a wait to be canceled. + True if all waits succeeded, false if a timeout occurred. + + + + Internal WaitAll implementation which is meant to be used with small number of tasks, + optimized for Parallel.Invoke and other structured primitives. + + + + + This internal function is only meant to be called by WaitAll() + If the completed task is canceled or it has other exceptions, here we will add those + into the passed in exception list (which will be lazily initialized here). + + + + + Waits for any of the provided objects to complete execution. + + + An array of instances on which to wait. + + The index of the completed task in the array argument. + + The argument is null. + + + The argument contains a null element. + + + The has been disposed. + + + + + Waits for any of the provided objects to complete execution. + + + An array of instances on which to wait. + + + A that represents the number of milliseconds to wait, or a that represents -1 milliseconds to wait indefinitely. + + + The index of the completed task in the array argument, or -1 if the + timeout occurred. + + + The argument is null. + + + The argument contains a null element. + + + The has been disposed. + + + is a negative number other than -1 milliseconds, which represents an + infinite time-out -or- timeout is greater than + . + + + + + Waits for any of the provided objects to complete execution. + + + An array of instances on which to wait. + + + A to observe while waiting for a task to complete. + + + The index of the completed task in the array argument. + + + The argument is null. + + + The argument contains a null element. + + + The has been disposed. + + + The was canceled. + + + + + Waits for any of the provided objects to complete execution. + + + An array of instances on which to wait. + + + The number of milliseconds to wait, or (-1) to + wait indefinitely. + + + The index of the completed task in the array argument, or -1 if the + timeout occurred. + + + The argument is null. + + + The argument contains a null element. + + + The has been disposed. + + + is a negative number other than -1, which represents an + infinite time-out. + + + + + Waits for any of the provided objects to complete execution. + + + An array of instances on which to wait. + + + The number of milliseconds to wait, or (-1) to + wait indefinitely. + + + A to observe while waiting for a task to complete. + + + The index of the completed task in the array argument, or -1 if the + timeout occurred. + + + The argument is null. + + + The argument contains a null element. + + + The has been disposed. + + + is a negative number other than -1, which represents an + infinite time-out. + + + The was canceled. + + + + + Gets a unique ID for this Task instance. + + + Task IDs are assigned on-demand and do not necessarily represent the order in the which Task + instances were created. + + + + + Returns the unique ID of the currently executing Task. + + + + + Gets the Task instance currently executing, or + null if none exists. + + + + + Gets the StackGuard object assigned to the current thread. + + + + + Gets the Exception that caused the Task to end prematurely. If the Task completed successfully or has not yet thrown any + exceptions, this will return null. + + + Tasks that throw unhandled exceptions store the resulting exception and propagate it wrapped in a + in calls to Wait + or in accesses to the property. Any exceptions not observed by the time + the Task instance is garbage collected will be propagated on the finalizer thread. + + + The Task + has been disposed. + + + + + Gets the TaskStatus of this Task. + + + + + Gets whether this Task instance has completed + execution due to being canceled. + + + A Task will complete in Canceled state either if its CancellationToken + was marked for cancellation before the task started executing, or if the task acknowledged the cancellation request on + its already signaled CancellationToken by throwing an + OperationCanceledException that bears the same + CancellationToken. + + + + + Returns true if this task has a cancellation token and it was signaled. + To be used internally in execute entry codepaths. + + + + + This internal property provides access to the CancellationToken that was set on the task + when it was constructed. + + + + + Gets whether this threw an OperationCanceledException while its CancellationToken was signaled. + + + + + Gets whether this Task has completed. + + + will return true when the Task is in one of the three + final states: RanToCompletion, + Faulted, or + Canceled. + + + + + Checks whether this task has been disposed. + + + + + Gets the TaskCreationOptions used + to create this task. + + + + + Gets a that can be used to wait for the task to + complete. + + + Using the wait functionality provided by + should be preferred over using for similar + functionality. + + + The has been disposed. + + + + + Gets the state object supplied when the Task was created, + or null if none was supplied. + + + + + Gets an indication of whether the asynchronous operation completed synchronously. + + true if the asynchronous operation completed synchronously; otherwise, false. + + + + Provides access to the TaskScheduler responsible for executing this Task. + + + + + Provides access to factory methods for creating and instances. + + + The factory returned from is a default instance + of , as would result from using + the default constructor on TaskFactory. + + + + + Provides an event that can be used to wait for completion. + Only called by Wait*(), which means that we really do need to instantiate a completion event. + + + + + Determines whether this is the root task of a self replicating group. + + + + + Determines whether the task is a replica itself. + + + + + The property formerly known as IsFaulted. + + + + + Gets whether the completed due to an unhandled exception. + + + If is true, the Task's will be equal to + TaskStatus.Faulted, and its + property will be non-null. + + + + + Checks whether the TASK_STATE_EXCEPTIONOBSERVEDBYPARENT status flag is set, + This will only be used by the implicit wait to prevent double throws + + + + + + Checks whether the body was ever invoked. Used by task scheduler code to verify custom schedulers actually ran the task. + + + + + A structure to hold continuation information. + + + + + Constructs a new continuation structure. + + The task to be activated. + The continuation options. + The scheduler to use for the continuation. + + + + Invokes the continuation for the target completion task. + + The completed task. + Whether the continuation can be inlined. + + + + Initializes a new with the specified function. + + + The delegate that represents the code to execute in the task. When the function has completed, + the task's property will be set to return the result value of the function. + + + The argument is null. + + + + + Initializes a new with the specified function. + + + The delegate that represents the code to execute in the task. When the function has completed, + the task's property will be set to return the result value of the function. + + The to be assigned to this task. + + The argument is null. + + The provided CancellationToken + has already been disposed. + + + + + Initializes a new with the specified function and creation options. + + + The delegate that represents the code to execute in the task. When the function has completed, + the task's property will be set to return the result value of the function. + + + The TaskCreationOptions used to + customize the task's behavior. + + + The argument is null. + + + The argument specifies an invalid value for . + + + + + Initializes a new with the specified function and creation options. + + + The delegate that represents the code to execute in the task. When the function has completed, + the task's property will be set to return the result value of the function. + + The that will be assigned to the new task. + + The TaskCreationOptions used to + customize the task's behavior. + + + The argument is null. + + + The argument specifies an invalid value for . + + The provided CancellationToken + has already been disposed. + + + + + Initializes a new with the specified function and state. + + + The delegate that represents the code to execute in the task. When the function has completed, + the task's property will be set to return the result value of the function. + + An object representing data to be used by the action. + + The argument is null. + + + + + Initializes a new with the specified action, state, and options. + + + The delegate that represents the code to execute in the task. When the function has completed, + the task's property will be set to return the result value of the function. + + An object representing data to be used by the function. + The to be assigned to the new task. + + The argument is null. + + The provided CancellationToken + has already been disposed. + + + + + Initializes a new with the specified action, state, and options. + + + The delegate that represents the code to execute in the task. When the function has completed, + the task's property will be set to return the result value of the function. + + An object representing data to be used by the function. + + The TaskCreationOptions used to + customize the task's behavior. + + + The argument is null. + + + The argument specifies an invalid value for . + + + + + Initializes a new with the specified action, state, and options. + + + The delegate that represents the code to execute in the task. When the function has completed, + the task's property will be set to return the result value of the function. + + An object representing data to be used by the function. + The to be assigned to the new task. + + The TaskCreationOptions used to + customize the task's behavior. + + + The argument is null. + + + The argument specifies an invalid value for . + + The provided CancellationToken + has already been disposed. + + + + + Creates a new future object. + + The parent task for this future. + A function that yields the future value. + The task scheduler which will be used to execute the future. + The CancellationToken for the task. + Options to control the future's behavior. + Internal options to control the future's behavior. + The argument specifies + a SelfReplicating , which is illegal."/>. + + + + Creates a new future object. + + The parent task for this future. + An object containing data to be used by the action; may be null. + A function that yields the future value. + The CancellationToken for the task. + The task scheduler which will be used to execute the future. + Options to control the future's behavior. + Internal options to control the future's behavior. + The argument specifies + a SelfReplicating , which is illegal."/>. + + + + Evaluates the value selector of the Task which is passed in as an object and stores the result. + + + + + Creates a continuation that executes when the target completes. + + + An action to run when the completes. When run, the delegate will be + passed the completed task as an argument. + + A new continuation . + + The returned will not be scheduled for execution until the current task has + completed, whether it completes due to running to completion successfully, faulting due to an + unhandled exception, or exiting out early due to being canceled. + + + The argument is null. + + + The has been disposed. + + + + + Creates a continuation that executes when the target completes. + + + An action to run when the completes. When run, the delegate will be + passed the completed task as an argument. + + The that will be assigned to the new continuation task. + A new continuation . + + The returned will not be scheduled for execution until the current task has + completed, whether it completes due to running to completion successfully, faulting due to an + unhandled exception, or exiting out early due to being canceled. + + + The argument is null. + + + The has been disposed. + + The provided CancellationToken + has already been disposed. + + + + + Creates a continuation that executes when the target completes. + + + An action to run when the completes. When run, the delegate will be + passed the completed task as an argument. + + + The to associate with the continuation task and to use for its execution. + + A new continuation . + + The returned will not be scheduled for execution until the current task has + completed, whether it completes due to running to completion successfully, faulting due to an + unhandled exception, or exiting out early due to being canceled. + + + The argument is null. + + + The argument is null. + + + The has been disposed. + + + + + Creates a continuation that executes when the target completes. + + + An action to run when the completes. When run, the delegate will be + passed the completed task as an argument. + + + Options for when the continuation is scheduled and how it behaves. This includes criteria, such + as OnlyOnCanceled, as + well as execution options, such as ExecuteSynchronously. + + A new continuation . + + The returned will not be scheduled for execution until the current task has + completed. If the continuation criteria specified through the parameter are not met, the continuation task will be canceled + instead of scheduled. + + + The argument is null. + + + The argument specifies an invalid value for TaskContinuationOptions. + + + The has been disposed. + + + + + Creates a continuation that executes when the target completes. + + + An action to run when the completes. When run, the delegate will be + passed the completed task as an argument. + + The that will be assigned to the new continuation task. + + Options for when the continuation is scheduled and how it behaves. This includes criteria, such + as OnlyOnCanceled, as + well as execution options, such as ExecuteSynchronously. + + + The to associate with the continuation task and to use for its + execution. + + A new continuation . + + The returned will not be scheduled for execution until the current task has + completed. If the criteria specified through the parameter + are not met, the continuation task will be canceled instead of scheduled. + + + The argument is null. + + + The argument specifies an invalid value for TaskContinuationOptions. + + + The argument is null. + + + The has been disposed. + + The provided CancellationToken + has already been disposed. + + + + + Creates a continuation that executes when the target completes. + + + The type of the result produced by the continuation. + + + A function to run when the completes. When run, the delegate will be + passed the completed task as an argument. + + A new continuation . + + The returned will not be scheduled for execution until the current + task has completed, whether it completes due to running to completion successfully, faulting due + to an unhandled exception, or exiting out early due to being canceled. + + + The argument is null. + + + The has been disposed. + + + + + Creates a continuation that executes when the target completes. + + + The type of the result produced by the continuation. + + + A function to run when the completes. When run, the delegate will be + passed the completed task as an argument. + + The that will be assigned to the new task. + A new continuation . + + The returned will not be scheduled for execution until the current + task has completed, whether it completes due to running to completion successfully, faulting due + to an unhandled exception, or exiting out early due to being canceled. + + + The argument is null. + + + The has been disposed. + + The provided CancellationToken + has already been disposed. + + + + + Creates a continuation that executes when the target completes. + + + The type of the result produced by the continuation. + + + A function to run when the completes. When run, the delegate will be + passed the completed task as an argument. + + + The to associate with the continuation task and to use for its execution. + + A new continuation . + + The returned will not be scheduled for execution until the current task has + completed, whether it completes due to running to completion successfully, faulting due to an + unhandled exception, or exiting out early due to being canceled. + + + The argument is null. + + + The argument is null. + + + The has been disposed. + + + + + Creates a continuation that executes when the target completes. + + + The type of the result produced by the continuation. + + + A function to run when the completes. When run, the delegate will be + passed the completed task as an argument. + + + Options for when the continuation is scheduled and how it behaves. This includes criteria, such + as OnlyOnCanceled, as + well as execution options, such as ExecuteSynchronously. + + A new continuation . + + + The returned will not be scheduled for execution until the current + task has completed, whether it completes due to running to completion successfully, faulting due + to an unhandled exception, or exiting out early due to being canceled. + + + The , when executed, should return a . This task's completion state will be transferred to the task returned + from the ContinueWith call. + + + + The argument is null. + + + The argument specifies an invalid value for TaskContinuationOptions. + + + The has been disposed. + + + + + Creates a continuation that executes when the target completes. + + + The type of the result produced by the continuation. + + + A function to run when the completes. When run, the delegate will be passed as + an argument this completed task. + + The that will be assigned to the new task. + + Options for when the continuation is scheduled and how it behaves. This includes criteria, such + as OnlyOnCanceled, as + well as execution options, such as ExecuteSynchronously. + + + The to associate with the continuation task and to use for its + execution. + + A new continuation . + + + The returned will not be scheduled for execution until the current task has + completed, whether it completes due to running to completion successfully, faulting due to an + unhandled exception, or exiting out early due to being canceled. + + + The , when executed, should return a . + This task's completion state will be transferred to the task returned from the + ContinueWith call. + + + + The argument is null. + + + The argument specifies an invalid value for TaskContinuationOptions. + + + The argument is null. + + + The has been disposed. + + The provided CancellationToken + has already been disposed. + + + + + Gets the result value of this . + + + The get accessor for this property ensures that the asynchronous operation is complete before + returning. Once the result of the computation is available, it is stored and will be returned + immediately on later calls to . + + + + + Provides access to factory methods for creating instances. + + + The factory returned from is a default instance + of , as would result from using + the default constructor on the factory type. + + + + + Provides support for creating and scheduling + Task{TResult} objects. + + The type of the results that are available though + the Task{TResult} objects that are associated with + the methods in this class. + + + There are many common patterns for which tasks are relevant. The + class encodes some of these patterns into methods that pick up default settings, which are + configurable through its constructors. + + + A default instance of is available through the + Task{TResult}.Factory property. + + + + + + Initializes a instance with the default configuration. + + + This constructor creates a instance with a default configuration. The + property is initialized to + TaskCreationOptions.None, the + property is initialized to TaskContinuationOptions.None, + and the TaskScheduler property is + initialized to the current scheduler (see TaskScheduler.Current). + + + + + Initializes a instance with the default configuration. + + The default that will be assigned + to tasks created by this unless another CancellationToken is explicitly specified + while calling the factory methods. + + This constructor creates a instance with a default configuration. The + property is initialized to + TaskCreationOptions.None, the + property is initialized to TaskContinuationOptions.None, + and the TaskScheduler property is + initialized to the current scheduler (see TaskScheduler.Current). + + + + + Initializes a instance with the specified configuration. + + + The + TaskScheduler to use to schedule any tasks created with this TaskFactory{TResult}. A null value + indicates that the current TaskScheduler should be used. + + + With this constructor, the + property is initialized to + TaskCreationOptions.None, the + property is initialized to TaskContinuationOptions.None, + and the TaskScheduler property is + initialized to , unless it's null, in which case the property is + initialized to the current scheduler (see TaskScheduler.Current). + + + + + Initializes a instance with the specified configuration. + + + The default + TaskCreationOptions to use when creating tasks with this TaskFactory{TResult}. + + + The default + TaskContinuationOptions to use when creating continuation tasks with this TaskFactory{TResult}. + + + The exception that is thrown when the + argument or the + argument specifies an invalid value. + + + With this constructor, the + property is initialized to , + the + property is initialized to , and the TaskScheduler property is initialized to the + current scheduler (see TaskScheduler.Current). + + + + + Initializes a instance with the specified configuration. + + The default that will be assigned + to tasks created by this unless another CancellationToken is explicitly specified + while calling the factory methods. + + The default + TaskCreationOptions to use when creating tasks with this TaskFactory{TResult}. + + + The default + TaskContinuationOptions to use when creating continuation tasks with this TaskFactory{TResult}. + + + The default + TaskScheduler to use to schedule any Tasks created with this TaskFactory{TResult}. A null value + indicates that TaskScheduler.Current should be used. + + + The exception that is thrown when the + argument or the + argumentspecifies an invalid value. + + + With this constructor, the + property is initialized to , + the + property is initialized to , and the TaskScheduler property is initialized to + , unless it's null, in which case the property is initialized to the + current scheduler (see TaskScheduler.Current). + + + + + Creates and starts a . + + A function delegate that returns the future result to be available through + the . + The started . + The exception that is thrown when the + argument is null. + + Calling StartNew is functionally equivalent to creating a using one + of its constructors and then calling + Start to schedule it for execution. + However, unless creation and scheduling must be separated, StartNew is the recommended approach + for both simplicity and performance. + + + + + Creates and starts a . + + A function delegate that returns the future result to be available through + the . + The that will be assigned to the new task. + The started . + The exception that is thrown when the + argument is null. + The provided CancellationToken + has already been disposed. + + + Calling StartNew is functionally equivalent to creating a using one + of its constructors and then calling + Start to schedule it for execution. + However, unless creation and scheduling must be separated, StartNew is the recommended approach + for both simplicity and performance. + + + + + Creates and starts a . + + A function delegate that returns the future result to be available through + the . + A TaskCreationOptions value that controls the behavior of the + created + . + The started . + The exception that is thrown when the + argument is null. + The exception that is thrown when the + argument specifies an invalid TaskCreationOptions + value. + + Calling StartNew is functionally equivalent to creating a using one + of its constructors and then calling + Start to schedule it for execution. + However, unless creation and scheduling must be separated, StartNew is the recommended approach + for both simplicity and performance. + + + + + Creates and starts a . + + A function delegate that returns the future result to be available through + the . + A TaskCreationOptions value that controls the behavior of the + created + . + The that will be assigned to the new task. + The TaskScheduler + that is used to schedule the created + Task{TResult}. + The started . + The exception that is thrown when the + argument is null. + The exception that is thrown when the + argument is null. + The exception that is thrown when the + argument specifies an invalid TaskCreationOptions + value. + The provided CancellationToken + has already been disposed. + + + Calling StartNew is functionally equivalent to creating a using one + of its constructors and then calling + Start to schedule it for execution. + However, unless creation and scheduling must be separated, StartNew is the recommended approach + for both simplicity and performance. + + + + + Creates and starts a . + + A function delegate that returns the future result to be available through + the . + An object containing data to be used by the + delegate. + The started . + The exception that is thrown when the + argument is null. + + Calling StartNew is functionally equivalent to creating a using one + of its constructors and then calling + Start to schedule it for execution. + However, unless creation and scheduling must be separated, StartNew is the recommended approach + for both simplicity and performance. + + + + + Creates and starts a . + + A function delegate that returns the future result to be available through + the . + An object containing data to be used by the + delegate. + The that will be assigned to the new task. + The started . + The exception that is thrown when the + argument is null. + The provided CancellationToken + has already been disposed. + + + Calling StartNew is functionally equivalent to creating a using one + of its constructors and then calling + Start to schedule it for execution. + However, unless creation and scheduling must be separated, StartNew is the recommended approach + for both simplicity and performance. + + + + + Creates and starts a . + + A function delegate that returns the future result to be available through + the . + An object containing data to be used by the + delegate. + A TaskCreationOptions value that controls the behavior of the + created + . + The started . + The exception that is thrown when the + argument is null. + The exception that is thrown when the + argument specifies an invalid TaskCreationOptions + value. + + Calling StartNew is functionally equivalent to creating a using one + of its constructors and then calling + Start to schedule it for execution. + However, unless creation and scheduling must be separated, StartNew is the recommended approach + for both simplicity and performance. + + + + + Creates and starts a . + + A function delegate that returns the future result to be available through + the . + An object containing data to be used by the + delegate. + The that will be assigned to the new task. + A TaskCreationOptions value that controls the behavior of the + created + . + The TaskScheduler + that is used to schedule the created + Task{TResult}. + The started . + The exception that is thrown when the + argument is null. + The exception that is thrown when the + argument is null. + The exception that is thrown when the + argument specifies an invalid TaskCreationOptions + value. + The provided CancellationToken + has already been disposed. + + + Calling StartNew is functionally equivalent to creating a using one + of its constructors and then calling + Start to schedule it for execution. + However, unless creation and scheduling must be separated, StartNew is the recommended approach + for both simplicity and performance. + + + + + Creates a Task that executes an end + method function when a specified IAsyncResult completes. + + The IAsyncResult whose completion should trigger the processing of the + . + The function delegate that processes the completed . + The exception that is thrown when the + argument is null. + The exception that is thrown when the + argument is null. + A Task that represents the + asynchronous operation. + + + + Creates a Task that executes an end + method function when a specified IAsyncResult completes. + + The IAsyncResult whose completion should trigger the processing of the + . + The function delegate that processes the completed . + The TaskCreationOptions value that controls the behavior of the + created Task. + The exception that is thrown when the + argument is null. + The exception that is thrown when the + argument is null. + The exception that is thrown when the + argument specifies an invalid TaskCreationOptions + value. + A Task that represents the + asynchronous operation. + + + + Creates a Task that executes an end + method function when a specified IAsyncResult completes. + + The IAsyncResult whose completion should trigger the processing of the + . + The function delegate that processes the completed . + The TaskScheduler + that is used to schedule the task that executes the end method. + The TaskCreationOptions value that controls the behavior of the + created Task. + The exception that is thrown when the + argument is null. + The exception that is thrown when the + argument is null. + The exception that is thrown when the + argument is null. + The exception that is thrown when the + argument specifies an invalid TaskCreationOptions + value. + A Task that represents the + asynchronous operation. + + + + Creates a Task that represents a pair of + begin and end methods that conform to the Asynchronous Programming Model pattern. + + The delegate that begins the asynchronous operation. + The delegate that ends the asynchronous operation. + An object containing data to be used by the + delegate. + The exception that is thrown when the + argument is null. + The exception that is thrown when the + argument is null. + The created Task that + represents the asynchronous operation. + + This method throws any exceptions thrown by the . + + + + + Creates a Task that represents a pair of + begin and end methods that conform to the Asynchronous Programming Model pattern. + + The delegate that begins the asynchronous operation. + The delegate that ends the asynchronous operation. + The TaskCreationOptions value that controls the behavior of the + created Task. + An object containing data to be used by the + delegate. + The exception that is thrown when the + argument is null. + The exception that is thrown when the + argument is null. + The exception that is thrown when the + argument specifies an invalid TaskCreationOptions + value. + The created Task that + represents the asynchronous operation. + + This method throws any exceptions thrown by the . + + + + + Creates a Task that represents a pair of + begin and end methods that conform to the Asynchronous Programming Model pattern. + + The type of the first argument passed to the delegate. + The delegate that begins the asynchronous operation. + The delegate that ends the asynchronous operation. + The first argument passed to the + delegate. + An object containing data to be used by the + delegate. + The exception that is thrown when the + argument is null. + The exception that is thrown when the + argument is null. + The created Task that + represents the asynchronous operation. + + This method throws any exceptions thrown by the . + + + + + Creates a Task that represents a pair of + begin and end methods that conform to the Asynchronous Programming Model pattern. + + The type of the first argument passed to the delegate. + The delegate that begins the asynchronous operation. + The delegate that ends the asynchronous operation. + The first argument passed to the + delegate. + The TaskCreationOptions value that controls the behavior of the + created Task. + An object containing data to be used by the + delegate. + The exception that is thrown when the + argument is null. + The exception that is thrown when the + argument is null. + The exception that is thrown when the + argument specifies an invalid TaskCreationOptions + value. + The created Task that + represents the asynchronous operation. + + This method throws any exceptions thrown by the . + + + + + Creates a Task that represents a pair of + begin and end methods that conform to the Asynchronous Programming Model pattern. + + The type of the first argument passed to the delegate. + The type of the second argument passed to + delegate. + The delegate that begins the asynchronous operation. + The delegate that ends the asynchronous operation. + The first argument passed to the + delegate. + The second argument passed to the + delegate. + An object containing data to be used by the + delegate. + The exception that is thrown when the + argument is null. + The exception that is thrown when the + argument is null. + The created Task that + represents the asynchronous operation. + + This method throws any exceptions thrown by the . + + + + + Creates a Task that represents a pair of + begin and end methods that conform to the Asynchronous Programming Model pattern. + + The type of the first argument passed to the delegate. + The type of the second argument passed to + delegate. + The delegate that begins the asynchronous operation. + The delegate that ends the asynchronous operation. + The first argument passed to the + delegate. + The second argument passed to the + delegate. + The TaskCreationOptions value that controls the behavior of the + created Task. + An object containing data to be used by the + delegate. + The exception that is thrown when the + argument is null. + The exception that is thrown when the + argument is null. + The exception that is thrown when the + argument specifies an invalid TaskCreationOptions + value. + The created Task that + represents the asynchronous operation. + + This method throws any exceptions thrown by the . + + + + + Creates a Task that represents a pair of + begin and end methods that conform to the Asynchronous Programming Model pattern. + + The type of the first argument passed to the delegate. + The type of the second argument passed to + delegate. + The type of the third argument passed to + delegate. + The delegate that begins the asynchronous operation. + The delegate that ends the asynchronous operation. + The first argument passed to the + delegate. + The second argument passed to the + delegate. + The third argument passed to the + delegate. + An object containing data to be used by the + delegate. + The exception that is thrown when the + argument is null. + The exception that is thrown when the + argument is null. + The created Task that + represents the asynchronous operation. + + This method throws any exceptions thrown by the . + + + + + Creates a Task that represents a pair of + begin and end methods that conform to the Asynchronous Programming Model pattern. + + The type of the first argument passed to the delegate. + The type of the second argument passed to + delegate. + The type of the third argument passed to + delegate. + The delegate that begins the asynchronous operation. + The delegate that ends the asynchronous operation. + The first argument passed to the + delegate. + The second argument passed to the + delegate. + The third argument passed to the + delegate. + The TaskCreationOptions value that controls the behavior of the + created Task. + An object containing data to be used by the + delegate. + The exception that is thrown when the + argument is null. + The exception that is thrown when the + argument is null. + The exception that is thrown when the + argument specifies an invalid TaskCreationOptions + value. + The created Task that + represents the asynchronous operation. + + This method throws any exceptions thrown by the . + + + + + Creates a continuation Task + that will be started upon the completion of a set of provided Tasks. + + The array of tasks from which to continue. + The function delegate to execute when all tasks in + the array have completed. + The new continuation Task. + The exception that is thrown when the + array is null. + The exception that is thrown when the + argument is null. + The exception that is thrown when the + array contains a null value. + The exception that is thrown when the + array is empty. + The exception that is thrown when one + of the elements in the array has been disposed. + + + + Creates a continuation Task + that will be started upon the completion of a set of provided Tasks. + + The array of tasks from which to continue. + The function delegate to execute when all tasks in + the array have completed. + The CancellationToken + that will be assigned to the new continuation task. + The new continuation Task. + The exception that is thrown when the + array is null. + The exception that is thrown when the + argument is null. + The exception that is thrown when the + array contains a null value. + The exception that is thrown when the + array is empty. + The exception that is thrown when one + of the elements in the array has been disposed. + The provided CancellationToken + has already been disposed. + + + + + Creates a continuation Task + that will be started upon the completion of a set of provided Tasks. + + The array of tasks from which to continue. + The function delegate to execute when all tasks in the array have completed. + The + TaskContinuationOptions value that controls the behavior of + the created continuation Task. + The new continuation Task. + The exception that is thrown when the + array is null. + The exception that is thrown when the + argument is null. + The exception that is thrown when the + array contains a null value. + The exception that is thrown when the + array is empty. + The exception that is thrown when the + argument specifies an invalid TaskContinuationOptions + value. + The exception that is thrown when one + of the elements in the array has been disposed. + + The NotOn* and OnlyOn* TaskContinuationOptions, + which constrain for which TaskStatus states a continuation + will be executed, are illegal with ContinueWhenAll. + + + + + Creates a continuation Task + that will be started upon the completion of a set of provided Tasks. + + The array of tasks from which to continue. + The function delegate to execute when all tasks in the array have completed. + The CancellationToken + that will be assigned to the new continuation task. + The + TaskContinuationOptions value that controls the behavior of + the created continuation Task. + The TaskScheduler + that is used to schedule the created continuation Task. + The new continuation Task. + The exception that is thrown when the + array is null. + The exception that is thrown when the + argument is null. + The exception that is thrown when the + argument is null. + The exception that is thrown when the + array contains a null value. + The exception that is thrown when the + array is empty. + The exception that is thrown when the + argument specifies an invalid TaskContinuationOptions + value. + The exception that is thrown when one + of the elements in the array has been disposed. + The provided CancellationToken + has already been disposed. + + + The NotOn* and OnlyOn* TaskContinuationOptions, + which constrain for which TaskStatus states a continuation + will be executed, are illegal with ContinueWhenAll. + + + + + Creates a continuation Task + that will be started upon the completion of a set of provided Tasks. + + The type of the result of the antecedent . + The array of tasks from which to continue. + The function delegate to execute when all tasks in the + array have completed. + The new continuation . + The exception that is thrown when the + array is null. + The exception that is thrown when the + argument is null. + The exception that is thrown when the + array contains a null value. + The exception that is thrown when the + array is empty. + The exception that is thrown when one + of the elements in the array has been disposed. + + + + Creates a continuation Task + that will be started upon the completion of a set of provided Tasks. + + The type of the result of the antecedent . + The array of tasks from which to continue. + The function delegate to execute when all tasks in the + array have completed. + The CancellationToken + that will be assigned to the new continuation task. + The new continuation . + The exception that is thrown when the + array is null. + The exception that is thrown when the + argument is null. + The exception that is thrown when the + array contains a null value. + The exception that is thrown when the + array is empty. + The exception that is thrown when one + of the elements in the array has been disposed. + The provided CancellationToken + has already been disposed. + + + + + Creates a continuation Task + that will be started upon the completion of a set of provided Tasks. + + The type of the result of the antecedent . + The array of tasks from which to continue. + The function delegate to execute when all tasks in the + array have completed. + The + TaskContinuationOptions value that controls the behavior of + the created continuation Task. + The new continuation . + The exception that is thrown when the + array is null. + The exception that is thrown when the + argument is null. + The exception that is thrown when the + array contains a null value. + The exception that is thrown when the + array is empty. + The exception that is thrown when the + argument specifies an invalid TaskContinuationOptions + value. + The exception that is thrown when one + of the elements in the array has been disposed. + + The NotOn* and OnlyOn* TaskContinuationOptions, + which constrain for which TaskStatus states a continuation + will be executed, are illegal with ContinueWhenAll. + + + + + Creates a continuation Task + that will be started upon the completion of a set of provided Tasks. + + The type of the result of the antecedent . + The array of tasks from which to continue. + The function delegate to execute when all tasks in the + array have completed. + The CancellationToken + that will be assigned to the new continuation task. + The + TaskContinuationOptions value that controls the behavior of + the created continuation Task. + The TaskScheduler + that is used to schedule the created continuation . + The new continuation . + The exception that is thrown when the + array is null. + The exception that is thrown when the + argument is null. + The exception that is thrown when the + argument is null. + The exception that is thrown when the + array contains a null value. + The exception that is thrown when the + array is empty. + The exception that is thrown when the + argument specifies an invalid TaskContinuationOptions + value. + The exception that is thrown when one + of the elements in the array has been disposed. + The provided CancellationToken + has already been disposed. + + + The NotOn* and OnlyOn* TaskContinuationOptions, + which constrain for which TaskStatus states a continuation + will be executed, are illegal with ContinueWhenAll. + + + + + Creates a continuation Task + that will be started upon the completion of any Task in the provided set. + + The array of tasks from which to continue when one task completes. + The function delegate to execute when one task in the array completes. + The new continuation Task. + The exception that is thrown when the + array is null. + The exception that is thrown when the + argument is null. + The exception that is thrown when the + array contains a null value. + The exception that is thrown when the + array is empty. + The exception that is thrown when one + of the elements in the array has been disposed. + + + + Creates a continuation Task + that will be started upon the completion of any Task in the provided set. + + The array of tasks from which to continue when one task completes. + The function delegate to execute when one task in the array completes. + The CancellationToken + that will be assigned to the new continuation task. + The new continuation Task. + The exception that is thrown when the + array is null. + The exception that is thrown when the + argument is null. + The exception that is thrown when the + array contains a null value. + The exception that is thrown when the + array is empty. + The exception that is thrown when one + of the elements in the array has been disposed. + The provided CancellationToken + has already been disposed. + + + + + Creates a continuation Task + that will be started upon the completion of any Task in the provided set. + + The array of tasks from which to continue when one task completes. + The function delegate to execute when one task in the array completes. + The + TaskContinuationOptions value that controls the behavior of + the created continuation Task. + The new continuation Task. + The exception that is thrown when the + array is null. + The exception that is thrown when the + argument is null. + The exception that is thrown when the + array contains a null value. + The exception that is thrown when the + array is empty. + The exception that is thrown when the + argument specifies an invalid TaskContinuationOptions + value. + The exception that is thrown when one + of the elements in the array has been disposed. + + The NotOn* and OnlyOn* TaskContinuationOptions, + which constrain for which TaskStatus states a continuation + will be executed, are illegal with ContinueWhenAny. + + + + + Creates a continuation Task + that will be started upon the completion of any Task in the provided set. + + The array of tasks from which to continue when one task completes. + The function delegate to execute when one task in the array completes. + The CancellationToken + that will be assigned to the new continuation task. + The + TaskContinuationOptions value that controls the behavior of + the created continuation Task. + The TaskScheduler + that is used to schedule the created continuation Task. + The new continuation Task. + The exception that is thrown when the + array is null. + The exception that is thrown when the + argument is null. + The exception that is thrown when the + argument is null. + The exception that is thrown when the + array contains a null value. + The exception that is thrown when the + array is empty. + The exception that is thrown when the + argument specifies an invalid TaskContinuationOptions + value. + The exception that is thrown when one + of the elements in the array has been disposed. + The provided CancellationToken + has already been disposed. + + + The NotOn* and OnlyOn* TaskContinuationOptions, + which constrain for which TaskStatus states a continuation + will be executed, are illegal with ContinueWhenAny. + + + + + Creates a continuation Task + that will be started upon the completion of any Task in the provided set. + + The type of the result of the antecedent . + The array of tasks from which to continue when one task completes. + The function delegate to execute when one task in the + array completes. + The new continuation . + The exception that is thrown when the + array is null. + The exception that is thrown when the + argument is null. + The exception that is thrown when the + array contains a null value. + The exception that is thrown when the + array is empty. + The exception that is thrown when one + of the elements in the array has been disposed. + + + + Creates a continuation Task + that will be started upon the completion of any Task in the provided set. + + The type of the result of the antecedent . + The array of tasks from which to continue when one task completes. + The function delegate to execute when one task in the + array completes. + The CancellationToken + that will be assigned to the new continuation task. + The new continuation . + The exception that is thrown when the + array is null. + The exception that is thrown when the + argument is null. + The exception that is thrown when the + array contains a null value. + The exception that is thrown when the + array is empty. + The exception that is thrown when one + of the elements in the array has been disposed. + The provided CancellationToken + has already been disposed. + + + + + Creates a continuation Task + that will be started upon the completion of any Task in the provided set. + + The type of the result of the antecedent . + The array of tasks from which to continue when one task completes. + The function delegate to execute when one task in the + array completes. + The + TaskContinuationOptions value that controls the behavior of + the created continuation Task. + The new continuation . + The exception that is thrown when the + array is null. + The exception that is thrown when the + argument is null. + The exception that is thrown when the + array contains a null value. + The exception that is thrown when the + array is empty. + The exception that is thrown when the + argument specifies an invalid TaskContinuationOptions + value. + The exception that is thrown when one + of the elements in the array has been disposed. + + The NotOn* and OnlyOn* TaskContinuationOptions, + which constrain for which TaskStatus states a continuation + will be executed, are illegal with ContinueWhenAny. + + + + + Creates a continuation Task + that will be started upon the completion of any Task in the provided set. + + The type of the result of the antecedent . + The array of tasks from which to continue when one task completes. + The function delegate to execute when one task in the + array completes. + The CancellationToken + that will be assigned to the new continuation task. + The + TaskContinuationOptions value that controls the behavior of + the created continuation Task. + The TaskScheduler + that is used to schedule the created continuation . + The new continuation . + The exception that is thrown when the + array is null. + The exception that is thrown when the + argument is null. + The exception that is thrown when the + argument is null. + The exception that is thrown when the + array contains a null value. + The exception that is thrown when the + array is empty. + The exception that is thrown when the + argument specifies an invalid TaskContinuationOptions + value. + The exception that is thrown when one + of the elements in the array has been disposed. + The provided CancellationToken + has already been disposed. + + + The NotOn* and OnlyOn* TaskContinuationOptions, + which constrain for which TaskStatus states a continuation + will be executed, are illegal with ContinueWhenAny. + + + + + Gets the default CancellationToken of this + TaskFactory. + + + This property returns the default that will be assigned to all + tasks created by this factory unless another CancellationToken value is explicitly specified + during the call to the factory methods. + + + + + Gets the TaskScheduler of this + TaskFactory{TResult}. + + + This property returns the default scheduler for this factory. It will be used to schedule all + tasks unless another scheduler is explicitly specified during calls to this factory's methods. + If null, TaskScheduler.Current + will be used. + + + + + Gets the TaskCreationOptions + value of this TaskFactory{TResult}. + + + This property returns the default creation options for this factory. They will be used to create all + tasks unless other options are explicitly specified during calls to this factory's methods. + + + + + Gets the TaskContinuationOptions + value of this TaskFactory{TResult}. + + + This property returns the default continuation options for this factory. They will be used to create + all continuation tasks unless other options are explicitly specified during calls to this factory's methods. + + + + + Represents the current stage in the lifecycle of a . + + + + + The task has been initialized but has not yet been scheduled. + + + + + The task is waiting to be activated and scheduled internally by the .NET Framework infrastructure. + + + + + The task has been scheduled for execution but has not yet begun executing. + + + + + The task is running but has not yet completed. + + + + + The task has finished executing and is implicitly waiting for + attached child tasks to complete. + + + + + The task completed execution successfully. + + + + + The task acknowledged cancellation by throwing an OperationCanceledException with its own CancellationToken + while the token was in signaled state, or the task's CancellationToken was already signaled before the + task started executing. + + + + + The task completed due to an unhandled exception. + + + + + In some cases a replica will want to quit prematurely (ie. before finishing a chunk of work it may have grabbed) + yet they will need the next replica to pick things up from where they left. This API is used to save such state. + + Calling it is also the only way to record a premature exit. + + + + + + Specifies flags that control optional behavior for the creation and execution of tasks. + + + + + Specifies that the default behavior should be used. + + + + + A hint to a TaskScheduler to schedule a + task in as fair a manner as possible, meaning that tasks scheduled sooner will be more likely to + be run sooner, and tasks scheduled later will be more likely to be run later. + + + + + Specifies that a task will be a long-running, course-grained operation. It provides a hint to the + TaskScheduler that oversubscription may be + warranted. + + + + + Specifies that a task is attached to a parent in the task hierarchy. + + + + + Task creation flags which are only used internally. + + + + Specifies "No internal task options" + + + Used to filter out internal vs. public task creation options. + + + Specifies that the task will be queued by the runtime before handing it over to the user. + This flag will be used to skip the cancellationtoken registration step, which is only meant for unstarted tasks. + + + + Specifies flags that control optional behavior for the creation and execution of continuation tasks. + + + + + Default = "Continue on any, no task options, run asynchronously" + Specifies that the default behavior should be used. Continuations, by default, will + be scheduled when the antecedent task completes, regardless of the task's final TaskStatus. + + + + + A hint to a TaskScheduler to schedule a + task in as fair a manner as possible, meaning that tasks scheduled sooner will be more likely to + be run sooner, and tasks scheduled later will be more likely to be run later. + + + + + Specifies that a task will be a long-running, course-grained operation. It provides + a hint to the TaskScheduler that + oversubscription may be warranted. + + + + + Specifies that a task is attached to a parent in the task hierarchy. + + + + + Specifies that the continuation task should not be scheduled if its antecedent ran to completion. + This option is not valid for multi-task continuations. + + + + + Specifies that the continuation task should not be scheduled if its antecedent threw an unhandled + exception. This option is not valid for multi-task continuations. + + + + + Specifies that the continuation task should not be scheduled if its antecedent was canceled. This + option is not valid for multi-task continuations. + + + + + Specifies that the continuation task should be scheduled only if its antecedent ran to + completion. This option is not valid for multi-task continuations. + + + + + Specifies that the continuation task should be scheduled only if its antecedent threw an + unhandled exception. This option is not valid for multi-task continuations. + + + + + Specifies that the continuation task should be scheduled only if its antecedent was canceled. + This option is not valid for multi-task continuations. + + + + + Specifies that the continuation task should be executed synchronously. With this option + specified, the continuation will be run on the same thread that causes the antecedent task to + transition into its final state. If the antecedent is already complete when the continuation is + created, the continuation will run on the thread creating the continuation. Only very + short-running continuations should be executed synchronously. + + + + + Internal helper class to keep track of stack depth and decide whether we should inline or not. + + + + + This method needs to be called before attempting inline execution on the current thread. + If false is returned, it means we are too close to the end of the stack and should give up inlining. + Each call to TryBeginInliningScope() that returns true must be matched with a + call to EndInliningScope() regardless of whether inlining actually took place. + + + + + This needs to be called once for each previous successful TryBeginInliningScope() call after + inlining related logic runs. + + + + + Represents an exception used to communicate task cancellation. + + + + + Initializes a new instance of the class. + + + + + Initializes a new instance of the + class with a specified error message. + + The error message that explains the reason for the exception. + + + + Initializes a new instance of the + class with a specified error message and a reference to the inner exception that is the cause of + this exception. + + The error message that explains the reason for the exception. + The exception that is the cause of the current exception. + + + + Initializes a new instance of the class + with a reference to the that has been canceled. + + A task that has been canceled. + + + + Initializes a new instance of the + class with serialized data. + + The that holds the serialized object data about the exception being thrown. + The that contains contextual information about the source or destination. + + + + Gets the task associated with this exception. + + + It is permissible for no Task to be associated with a + , in which case + this property will return null. + + + + + An exception holder manages a list of exceptions for one particular task. + It offers the ability to aggregate, but more importantly, also offers intrinsic + support for propagating unhandled exceptions that are never observed. It does + this by aggregating and throwing if the holder is ever GC'd without the holder's + contents ever having been requested (e.g. by a Task.Wait, Task.get_Exception, etc). + + + + + Creates a new holder; it will be registered for finalization. + + The task this holder belongs to. + + + + A finalizer that repropagates unhandled exceptions. + + + + + Add an exception to the internal list. This will ensure the holder is + in the proper state (handled/unhandled) depending on the list's contents. + + An exception object (either an Exception or an + IEnumerable{Exception}) to add to the list. + + + + A private helper method that ensures the holder is considered + unhandled, i.e. it is registered for finalization. + + + + + A private helper method that ensures the holder is considered + handled, i.e. it is not registered for finalization. + + Whether this is called from the finalizer thread. + + + + Allocates a new aggregate exception and adds the contents of the list to + it. By calling this method, the holder assumes exceptions to have been + "observed", such that the finalization check will be subsequently skipped. + + Whether this is being called from a finalizer. + An extra exception to be included (optionally). + The aggregate exception to throw. + + + + Provides support for creating and scheduling + Tasks. + + + + There are many common patterns for which tasks are relevant. The + class encodes some of these patterns into methods that pick up default settings, which are + configurable through its constructors. + + + A default instance of is available through the + Task.Factory property. + + + + + + Initializes a instance with the default configuration. + + + This constructor creates a instance with a default configuration. The + property is initialized to + TaskCreationOptions.None, the + property is initialized to TaskContinuationOptions.None, + and the TaskScheduler property is + initialized to the current scheduler (see TaskScheduler.Current). + + + + + Initializes a instance with the specified configuration. + + The default that will be assigned + to tasks created by this unless another CancellationToken is explicitly specified + while calling the factory methods. + + This constructor creates a instance with a default configuration. The + property is initialized to + TaskCreationOptions.None, the + property is initialized to TaskContinuationOptions.None, + and the TaskScheduler property is + initialized to the current scheduler (see TaskScheduler.Current). + + + + + Initializes a instance with the specified configuration. + + + The + TaskScheduler to use to schedule any tasks created with this TaskFactory. A null value + indicates that the current TaskScheduler should be used. + + + With this constructor, the + property is initialized to + TaskCreationOptions.None, the + property is initialized to TaskContinuationOptions.None, + and the TaskScheduler property is + initialized to , unless it's null, in which case the property is + initialized to the current scheduler (see TaskScheduler.Current). + + + + + Initializes a instance with the specified configuration. + + + The default + TaskCreationOptions to use when creating tasks with this TaskFactory. + + + The default + TaskContinuationOptions to use when creating continuation tasks with this TaskFactory. + + + The exception that is thrown when the + argument or the + argument specifies an invalid value. + + + With this constructor, the + property is initialized to , + the + property is initialized to , and the TaskScheduler property is initialized to the + current scheduler (see TaskScheduler.Current). + + + + + Initializes a instance with the specified configuration. + + The default that will be assigned + to tasks created by this unless another CancellationToken is explicitly specified + while calling the factory methods. + + The default + TaskCreationOptions to use when creating tasks with this TaskFactory. + + + The default + TaskContinuationOptions to use when creating continuation tasks with this TaskFactory. + + + The default + TaskScheduler to use to schedule any Tasks created with this TaskFactory. A null value + indicates that TaskScheduler.Current should be used. + + + The exception that is thrown when the + argument or the + argumentspecifies an invalid value. + + + With this constructor, the + property is initialized to , + the + property is initialized to , and the TaskScheduler property is initialized to + , unless it's null, in which case the property is initialized to the + current scheduler (see TaskScheduler.Current). + + + + + Creates and starts a Task. + + The action delegate to execute asynchronously. + The started Task. + The exception that is thrown when the + argument is null. + + Calling StartNew is functionally equivalent to creating a Task using one of its constructors + and then calling + Start to schedule it for execution. However, + unless creation and scheduling must be separated, StartNew is the recommended + approach for both simplicity and performance. + + + + + Creates and starts a Task. + + The action delegate to execute asynchronously. + The that will be assigned to the new task. + The started Task. + The exception that is thrown when the + argument is null. + The provided CancellationToken + has already been disposed. + + + Calling StartNew is functionally equivalent to creating a Task using one of its constructors + and then calling + Start to schedule it for execution. However, + unless creation and scheduling must be separated, StartNew is the recommended + approach for both simplicity and performance. + + + + + Creates and starts a Task. + + The action delegate to execute asynchronously. + A TaskCreationOptions value that controls the behavior of the + created + Task. + The started Task. + The exception that is thrown when the + argument is null. + The exception that is thrown when the + argument specifies an invalid TaskCreationOptions + value. + + Calling StartNew is functionally equivalent to creating a Task using one of its constructors and + then calling + Start to schedule it for execution. + However, unless creation and scheduling must be separated, StartNew is the recommended approach + for both simplicity and performance. + + + + + Creates and starts a Task. + + The action delegate to execute asynchronously. + The that will be assigned to the new + A TaskCreationOptions value that controls the behavior of the + created + Task. + The TaskScheduler + that is used to schedule the created Task. + The started Task. + The exception that is thrown when the + argument is null. + The exception that is thrown when the + argument is null. + The exception that is thrown when the + argument specifies an invalid TaskCreationOptions + value. + The provided CancellationToken + has already been disposed. + + + Calling StartNew is functionally equivalent to creating a Task using one of its constructors and + then calling + Start to schedule it for execution. + However, unless creation and scheduling must be separated, StartNew is the recommended approach + for both simplicity and performance. + + + + + Creates and starts a Task. + + The action delegate to execute asynchronously. + An object containing data to be used by the + delegate. + The started Task. + The exception that is thrown when the + argument is null. + + Calling StartNew is functionally equivalent to creating a Task using one of its constructors and + then calling + Start to schedule it for execution. + However, unless creation and scheduling must be separated, StartNew is the recommended approach + for both simplicity and performance. + + + + + Creates and starts a Task. + + The action delegate to execute asynchronously. + An object containing data to be used by the + delegate. + The that will be assigned to the new + The started Task. + The exception that is thrown when the + argument is null. + The provided CancellationToken + has already been disposed. + + + Calling StartNew is functionally equivalent to creating a Task using one of its constructors and + then calling + Start to schedule it for execution. + However, unless creation and scheduling must be separated, StartNew is the recommended approach + for both simplicity and performance. + + + + + Creates and starts a Task. + + The action delegate to execute asynchronously. + An object containing data to be used by the + delegate. + A TaskCreationOptions value that controls the behavior of the + created + Task. + The started Task. + The exception that is thrown when the + argument is null. + The exception that is thrown when the + argument specifies an invalid TaskCreationOptions + value. + + Calling StartNew is functionally equivalent to creating a Task using one of its constructors and + then calling + Start to schedule it for execution. + However, unless creation and scheduling must be separated, StartNew is the recommended approach + for both simplicity and performance. + + + + + Creates and starts a Task. + + The action delegate to execute asynchronously. + An object containing data to be used by the + delegate. + The that will be assigned to the new task. + A TaskCreationOptions value that controls the behavior of the + created + Task. + The TaskScheduler + that is used to schedule the created Task. + The started Task. + The exception that is thrown when the + argument is null. + The exception that is thrown when the + argument is null. + The exception that is thrown when the + argument specifies an invalid TaskCreationOptions + value. + The provided CancellationToken + has already been disposed. + + + Calling StartNew is functionally equivalent to creating a Task using one of its constructors and + then calling + Start to schedule it for execution. + However, unless creation and scheduling must be separated, StartNew is the recommended approach + for both simplicity and performance. + + + + + Creates and starts a . + + The type of the result available through the + Task. + + A function delegate that returns the future result to be available through + the . + The started . + The exception that is thrown when the + argument is null. + + Calling StartNew is functionally equivalent to creating a using one + of its constructors and then calling + Start to schedule it for execution. + However, unless creation and scheduling must be separated, StartNew is the recommended approach + for both simplicity and performance. + + + + + Creates and starts a . + + The type of the result available through the + Task. + + A function delegate that returns the future result to be available through + the . + The that will be assigned to the new + The started . + The exception that is thrown when the + argument is null. + The provided CancellationToken + has already been disposed. + + + Calling StartNew is functionally equivalent to creating a using one + of its constructors and then calling + Start to schedule it for execution. + However, unless creation and scheduling must be separated, StartNew is the recommended approach + for both simplicity and performance. + + + + + Creates and starts a . + + The type of the result available through the + Task. + + A function delegate that returns the future result to be available through + the . + A TaskCreationOptions value that controls the behavior of the + created + . + The started . + The exception that is thrown when the + argument is null. + The exception that is thrown when the + argument specifies an invalid TaskCreationOptions + value. + + Calling StartNew is functionally equivalent to creating a using one + of its constructors and then calling + Start to schedule it for execution. + However, unless creation and scheduling must be separated, StartNew is the recommended approach + for both simplicity and performance. + + + + + Creates and starts a . + + The type of the result available through the + Task. + + A function delegate that returns the future result to be available through + the . + The that will be assigned to the new task. + A TaskCreationOptions value that controls the behavior of the + created + . + The TaskScheduler + that is used to schedule the created + Task{TResult}. + The started . + The exception that is thrown when the + argument is null. + The exception that is thrown when the + argument is null. + The exception that is thrown when the + argument specifies an invalid TaskCreationOptions + value. + The provided CancellationToken + has already been disposed. + + + Calling StartNew is functionally equivalent to creating a using one + of its constructors and then calling + Start to schedule it for execution. + However, unless creation and scheduling must be separated, StartNew is the recommended approach + for both simplicity and performance. + + + + + Creates and starts a . + + The type of the result available through the + Task. + + A function delegate that returns the future result to be available through + the . + An object containing data to be used by the + delegate. + The started . + The exception that is thrown when the + argument is null. + + Calling StartNew is functionally equivalent to creating a using one + of its constructors and then calling + Start to schedule it for execution. + However, unless creation and scheduling must be separated, StartNew is the recommended approach + for both simplicity and performance. + + + + + Creates and starts a . + + The type of the result available through the + Task. + + A function delegate that returns the future result to be available through + the . + An object containing data to be used by the + delegate. + The that will be assigned to the new + The started . + The exception that is thrown when the + argument is null. + The provided CancellationToken + has already been disposed. + + + Calling StartNew is functionally equivalent to creating a using one + of its constructors and then calling + Start to schedule it for execution. + However, unless creation and scheduling must be separated, StartNew is the recommended approach + for both simplicity and performance. + + + + + Creates and starts a . + + The type of the result available through the + Task. + + A function delegate that returns the future result to be available through + the . + An object containing data to be used by the + delegate. + A TaskCreationOptions value that controls the behavior of the + created + . + The started . + The exception that is thrown when the + argument is null. + The exception that is thrown when the + argument specifies an invalid TaskCreationOptions + value. + + Calling StartNew is functionally equivalent to creating a using one + of its constructors and then calling + Start to schedule it for execution. + However, unless creation and scheduling must be separated, StartNew is the recommended approach + for both simplicity and performance. + + + + + Creates and starts a . + + The type of the result available through the + Task. + + A function delegate that returns the future result to be available through + the . + An object containing data to be used by the + delegate. + The that will be assigned to the new task. + A TaskCreationOptions value that controls the behavior of the + created + . + The TaskScheduler + that is used to schedule the created + Task{TResult}. + The started . + The exception that is thrown when the + argument is null. + The exception that is thrown when the + argument is null. + The exception that is thrown when the + argument specifies an invalid TaskCreationOptions + value. + The provided CancellationToken + has already been disposed. + + + Calling StartNew is functionally equivalent to creating a using one + of its constructors and then calling + Start to schedule it for execution. + However, unless creation and scheduling must be separated, StartNew is the recommended approach + for both simplicity and performance. + + + + + Creates a Task that executes an end method action + when a specified IAsyncResult completes. + + The IAsyncResult whose completion should trigger the processing of the + . + The action delegate that processes the completed . + The exception that is thrown when the + argument is null. + The exception that is thrown when the + argument is null. + A Task that represents the asynchronous + operation. + + + + Creates a Task that executes an end method action + when a specified IAsyncResult completes. + + The IAsyncResult whose completion should trigger the processing of the + . + The action delegate that processes the completed . + The TaskCreationOptions value that controls the behavior of the + created Task. + The exception that is thrown when the + argument is null. + The exception that is thrown when the + argument is null. + The exception that is thrown when the + argument specifies an invalid TaskCreationOptions + value. + A Task that represents the asynchronous + operation. + + + + Creates a Task that executes an end method action + when a specified IAsyncResult completes. + + The IAsyncResult whose completion should trigger the processing of the + . + The action delegate that processes the completed . + The TaskScheduler + that is used to schedule the task that executes the end method. + The TaskCreationOptions value that controls the behavior of the + created Task. + The exception that is thrown when the + argument is null. + The exception that is thrown when the + argument is null. + The exception that is thrown when the + argument is null. + The exception that is thrown when the + argument specifies an invalid TaskCreationOptions + value. + A Task that represents the asynchronous + operation. + + + + Creates a Task that represents a pair of begin + and end methods that conform to the Asynchronous Programming Model pattern. + + The delegate that begins the asynchronous operation. + The delegate that ends the asynchronous operation. + An object containing data to be used by the + delegate. + The exception that is thrown when the + argument is null. + The exception that is thrown when the + argument is null. + The created Task that represents the + asynchronous operation. + + This method throws any exceptions thrown by the . + + + + + Creates a Task that represents a pair of begin + and end methods that conform to the Asynchronous Programming Model pattern. + + The delegate that begins the asynchronous operation. + The delegate that ends the asynchronous operation. + The TaskCreationOptions value that controls the behavior of the + created Task. + An object containing data to be used by the + delegate. + The exception that is thrown when the + argument is null. + The exception that is thrown when the + argument is null. + The exception that is thrown when the + argument specifies an invalid TaskCreationOptions + value. + The created Task that represents the + asynchronous operation. + + This method throws any exceptions thrown by the . + + + + + Creates a Task that represents a pair of begin + and end methods that conform to the Asynchronous Programming Model pattern. + + The type of the first argument passed to the + delegate. + The delegate that begins the asynchronous operation. + The delegate that ends the asynchronous operation. + The first argument passed to the + delegate. + An object containing data to be used by the + delegate. + The exception that is thrown when the + argument is null. + The exception that is thrown when the + argument is null. + The created Task that represents the + asynchronous operation. + + This method throws any exceptions thrown by the . + + + + + Creates a Task that represents a pair of begin + and end methods that conform to the Asynchronous Programming Model pattern. + + The type of the first argument passed to the + delegate. + The delegate that begins the asynchronous operation. + The delegate that ends the asynchronous operation. + The first argument passed to the + delegate. + The TaskCreationOptions value that controls the behavior of the + created Task. + An object containing data to be used by the + delegate. + The exception that is thrown when the + argument is null. + The exception that is thrown when the + argument is null. + The exception that is thrown when the + argument specifies an invalid TaskCreationOptions + value. + The created Task that represents the + asynchronous operation. + + This method throws any exceptions thrown by the . + + + + + Creates a Task that represents a pair of begin + and end methods that conform to the Asynchronous Programming Model pattern. + + The type of the first argument passed to the + delegate. + The type of the second argument passed to + delegate. + The delegate that begins the asynchronous operation. + The delegate that ends the asynchronous operation. + The first argument passed to the + delegate. + The second argument passed to the + delegate. + An object containing data to be used by the + delegate. + The exception that is thrown when the + argument is null. + The exception that is thrown when the + argument is null. + The created Task that represents the + asynchronous operation. + + This method throws any exceptions thrown by the . + + + + + Creates a Task that represents a pair of begin + and end methods that conform to the Asynchronous Programming Model pattern. + + The type of the first argument passed to the + delegate. + The type of the second argument passed to + delegate. + The delegate that begins the asynchronous operation. + The delegate that ends the asynchronous operation. + The first argument passed to the + delegate. + The second argument passed to the + delegate. + The TaskCreationOptions value that controls the behavior of the + created Task. + An object containing data to be used by the + delegate. + The exception that is thrown when the + argument is null. + The exception that is thrown when the + argument is null. + The exception that is thrown when the + argument specifies an invalid TaskCreationOptions + value. + The created Task that represents the + asynchronous operation. + + This method throws any exceptions thrown by the . + + + + + Creates a Task that represents a pair of begin + and end methods that conform to the Asynchronous Programming Model pattern. + + The type of the first argument passed to the + delegate. + The type of the second argument passed to + delegate. + The type of the third argument passed to + delegate. + The delegate that begins the asynchronous operation. + The delegate that ends the asynchronous operation. + The first argument passed to the + delegate. + The second argument passed to the + delegate. + The third argument passed to the + delegate. + An object containing data to be used by the + delegate. + The exception that is thrown when the + argument is null. + The exception that is thrown when the + argument is null. + The created Task that represents the + asynchronous operation. + + This method throws any exceptions thrown by the . + + + + + Creates a Task that represents a pair of begin + and end methods that conform to the Asynchronous Programming Model pattern. + + The type of the first argument passed to the + delegate. + The type of the second argument passed to + delegate. + The type of the third argument passed to + delegate. + The delegate that begins the asynchronous operation. + The delegate that ends the asynchronous operation. + The first argument passed to the + delegate. + The second argument passed to the + delegate. + The third argument passed to the + delegate. + The TaskCreationOptions value that controls the behavior of the + created Task. + An object containing data to be used by the + delegate. + The exception that is thrown when the + argument is null. + The exception that is thrown when the + argument is null. + The exception that is thrown when the + argument specifies an invalid TaskCreationOptions + value. + The created Task that represents the + asynchronous operation. + + This method throws any exceptions thrown by the . + + + + + Creates a Task that executes an end + method function when a specified IAsyncResult completes. + + The type of the result available through the + Task. + + The IAsyncResult whose completion should trigger the processing of the + . + The function delegate that processes the completed . + The exception that is thrown when the + argument is null. + The exception that is thrown when the + argument is null. + A Task that represents the + asynchronous operation. + + + + Creates a Task that executes an end + method function when a specified IAsyncResult completes. + + The type of the result available through the + Task. + + The IAsyncResult whose completion should trigger the processing of the + . + The function delegate that processes the completed . + The TaskCreationOptions value that controls the behavior of the + created Task. + The exception that is thrown when the + argument is null. + The exception that is thrown when the + argument is null. + The exception that is thrown when the + argument specifies an invalid TaskCreationOptions + value. + A Task that represents the + asynchronous operation. + + + + Creates a Task that executes an end + method function when a specified IAsyncResult completes. + + The type of the result available through the + Task. + + The IAsyncResult whose completion should trigger the processing of the + . + The function delegate that processes the completed . + The TaskScheduler + that is used to schedule the task that executes the end method. + The TaskCreationOptions value that controls the behavior of the + created Task. + The exception that is thrown when the + argument is null. + The exception that is thrown when the + argument is null. + The exception that is thrown when the + argument is null. + The exception that is thrown when the + argument specifies an invalid TaskCreationOptions + value. + A Task that represents the + asynchronous operation. + + + + Creates a Task that represents a pair of + begin and end methods that conform to the Asynchronous Programming Model pattern. + + The type of the result available through the + Task. + + The delegate that begins the asynchronous operation. + The delegate that ends the asynchronous operation. + An object containing data to be used by the + delegate. + The exception that is thrown when the + argument is null. + The exception that is thrown when the + argument is null. + The created Task that + represents the asynchronous operation. + + This method throws any exceptions thrown by the . + + + + + Creates a Task that represents a pair of + begin and end methods that conform to the Asynchronous Programming Model pattern. + + The type of the result available through the + Task. + + The delegate that begins the asynchronous operation. + The delegate that ends the asynchronous operation. + The TaskCreationOptions value that controls the behavior of the + created Task. + An object containing data to be used by the + delegate. + The exception that is thrown when the + argument is null. + The exception that is thrown when the + argument is null. + The exception that is thrown when the + argument specifies an invalid TaskCreationOptions + value. + The created Task that + represents the asynchronous operation. + + This method throws any exceptions thrown by the . + + + + + Creates a Task that represents a pair of + begin and end methods that conform to the Asynchronous Programming Model pattern. + + The type of the first argument passed to the delegate. + The type of the result available through the + Task. + + The delegate that begins the asynchronous operation. + The delegate that ends the asynchronous operation. + The first argument passed to the + delegate. + An object containing data to be used by the + delegate. + The exception that is thrown when the + argument is null. + The exception that is thrown when the + argument is null. + The created Task that + represents the asynchronous operation. + + This method throws any exceptions thrown by the . + + + + + Creates a Task that represents a pair of + begin and end methods that conform to the Asynchronous Programming Model pattern. + + The type of the first argument passed to the delegate. + The type of the result available through the + Task. + + The delegate that begins the asynchronous operation. + The delegate that ends the asynchronous operation. + The first argument passed to the + delegate. + The TaskCreationOptions value that controls the behavior of the + created Task. + An object containing data to be used by the + delegate. + The exception that is thrown when the + argument is null. + The exception that is thrown when the + argument is null. + The exception that is thrown when the + argument specifies an invalid TaskCreationOptions + value. + The created Task that + represents the asynchronous operation. + + This method throws any exceptions thrown by the . + + + + + Creates a Task that represents a pair of + begin and end methods that conform to the Asynchronous Programming Model pattern. + + The type of the first argument passed to the delegate. + The type of the second argument passed to + delegate. + The type of the result available through the + Task. + + The delegate that begins the asynchronous operation. + The delegate that ends the asynchronous operation. + The first argument passed to the + delegate. + The second argument passed to the + delegate. + An object containing data to be used by the + delegate. + The exception that is thrown when the + argument is null. + The exception that is thrown when the + argument is null. + The created Task that + represents the asynchronous operation. + + This method throws any exceptions thrown by the . + + + + + Creates a Task that represents a pair of + begin and end methods that conform to the Asynchronous Programming Model pattern. + + The type of the first argument passed to the delegate. + The type of the second argument passed to + delegate. + The type of the result available through the + Task. + + The delegate that begins the asynchronous operation. + The delegate that ends the asynchronous operation. + The first argument passed to the + delegate. + The second argument passed to the + delegate. + The TaskCreationOptions value that controls the behavior of the + created Task. + An object containing data to be used by the + delegate. + The exception that is thrown when the + argument is null. + The exception that is thrown when the + argument is null. + The exception that is thrown when the + argument specifies an invalid TaskCreationOptions + value. + The created Task that + represents the asynchronous operation. + + This method throws any exceptions thrown by the . + + + + + Creates a Task that represents a pair of + begin and end methods that conform to the Asynchronous Programming Model pattern. + + The type of the first argument passed to the delegate. + The type of the second argument passed to + delegate. + The type of the third argument passed to + delegate. + The type of the result available through the + Task. + + The delegate that begins the asynchronous operation. + The delegate that ends the asynchronous operation. + The first argument passed to the + delegate. + The second argument passed to the + delegate. + The third argument passed to the + delegate. + An object containing data to be used by the + delegate. + The exception that is thrown when the + argument is null. + The exception that is thrown when the + argument is null. + The created Task that + represents the asynchronous operation. + + This method throws any exceptions thrown by the . + + + + + Creates a Task that represents a pair of + begin and end methods that conform to the Asynchronous Programming Model pattern. + + The type of the first argument passed to the delegate. + The type of the second argument passed to + delegate. + The type of the third argument passed to + delegate. + The type of the result available through the + Task. + + The delegate that begins the asynchronous operation. + The delegate that ends the asynchronous operation. + The first argument passed to the + delegate. + The second argument passed to the + delegate. + The third argument passed to the + delegate. + The TaskCreationOptions value that controls the behavior of the + created Task. + An object containing data to be used by the + delegate. + The exception that is thrown when the + argument is null. + The exception that is thrown when the + argument is null. + The exception that is thrown when the + argument specifies an invalid TaskCreationOptions + value. + The created Task that + represents the asynchronous operation. + + This method throws any exceptions thrown by the . + + + + + Check validity of options passed to FromAsync method + + The options to be validated. + determines type of FromAsync method that called this method + + + + Creates a continuation Task + that will be started upon the completion of a set of provided Tasks. + + The array of tasks from which to continue. + The action delegate to execute when all tasks in + the array have completed. + The new continuation Task. + The exception that is thrown when the + array is null. + The exception that is thrown when the + argument is null. + The exception that is thrown when the + array contains a null value. + The exception that is thrown when the + array is empty. + The exception that is thrown when one + of the elements in the array has been disposed. + + + + Creates a continuation Task + that will be started upon the completion of a set of provided Tasks. + + The array of tasks from which to continue. + The action delegate to execute when all tasks in + the array have completed. + The CancellationToken + that will be assigned to the new continuation task. + The new continuation Task. + The exception that is thrown when the + array is null. + The exception that is thrown when the + argument is null. + The exception that is thrown when the + array contains a null value. + The exception that is thrown when the + array is empty. + The exception that is thrown when one + of the elements in the array has been disposed. + The provided CancellationToken + has already been disposed. + + + + + Creates a continuation Task + that will be started upon the completion of a set of provided Tasks. + + The array of tasks from which to continue. + The action delegate to execute when all tasks in the array have completed. + The + TaskContinuationOptions value that controls the behavior of + the created continuation Task. + The new continuation Task. + The exception that is thrown when the + array is null. + The exception that is thrown when the + argument is null. + The exception that is thrown when the + array contains a null value. + The exception that is thrown when the + array is empty. + The exception that is thrown when the + argument specifies an invalid TaskContinuationOptions + value. + The exception that is thrown when one + of the elements in the array has been disposed. + + The NotOn* and OnlyOn* TaskContinuationOptions, + which constrain for which TaskStatus states a continuation + will be executed, are illegal with ContinueWhenAll. + + + + + Creates a continuation Task + that will be started upon the completion of a set of provided Tasks. + + The array of tasks from which to continue. + The action delegate to execute when all tasks in the array have completed. + The CancellationToken + that will be assigned to the new continuation task. + The + TaskContinuationOptions value that controls the behavior of + the created continuation Task. + The TaskScheduler + that is used to schedule the created continuation Task. + The new continuation Task. + The exception that is thrown when the + array is null. + The exception that is thrown when the + argument is null. + The exception that is thrown when the + argument is null. + The exception that is thrown when the + array contains a null value. + The exception that is thrown when the + array is empty. + The exception that is thrown when the + argument specifies an invalid TaskContinuationOptions + value. + The exception that is thrown when one + of the elements in the array has been disposed. + The provided CancellationToken + has already been disposed. + + + The NotOn* and OnlyOn* TaskContinuationOptions, + which constrain for which TaskStatus states a continuation + will be executed, are illegal with ContinueWhenAll. + + + + + Creates a continuation Task + that will be started upon the completion of a set of provided Tasks. + + The type of the result of the antecedent . + The array of tasks from which to continue. + The action delegate to execute when all tasks in + the array have completed. + The new continuation Task. + The exception that is thrown when the + array is null. + The exception that is thrown when the + argument is null. + The exception that is thrown when the + array contains a null value. + The exception that is thrown when the + array is empty. + The exception that is thrown when one + of the elements in the array has been disposed. + + + + Creates a continuation Task + that will be started upon the completion of a set of provided Tasks. + + The type of the result of the antecedent . + The array of tasks from which to continue. + The action delegate to execute when all tasks in + the array have completed. + The CancellationToken + that will be assigned to the new continuation task. + The new continuation Task. + The exception that is thrown when the + array is null. + The exception that is thrown when the + argument is null. + The exception that is thrown when the + array contains a null value. + The exception that is thrown when the + array is empty. + The exception that is thrown when one + of the elements in the array has been disposed. + The provided CancellationToken + has already been disposed. + + + + + Creates a continuation Task + that will be started upon the completion of a set of provided Tasks. + + The type of the result of the antecedent . + The array of tasks from which to continue. + The action delegate to execute when all tasks in the array have completed. + The + TaskContinuationOptions value that controls the behavior of + the created continuation Task. + The new continuation Task. + The exception that is thrown when the + array is null. + The exception that is thrown when the + argument is null. + The exception that is thrown when the + array contains a null value. + The exception that is thrown when the + array is empty. + The exception that is thrown when the + argument specifies an invalid TaskContinuationOptions + value. + The exception that is thrown when one + of the elements in the array has been disposed. + + The NotOn* and OnlyOn* TaskContinuationOptions, + which constrain for which TaskStatus states a continuation + will be executed, are illegal with ContinueWhenAll. + + + + + Creates a continuation Task + that will be started upon the completion of a set of provided Tasks. + + The type of the result of the antecedent . + The array of tasks from which to continue. + The action delegate to execute when all tasks in the array have completed. + The CancellationToken + that will be assigned to the new continuation task. + The + TaskContinuationOptions value that controls the behavior of + the created continuation Task. + The TaskScheduler + that is used to schedule the created continuation Task. + The new continuation Task. + The exception that is thrown when the + array is null. + The exception that is thrown when the + argument is null. + The exception that is thrown when the + argument is null. + The exception that is thrown when the + array contains a null value. + The exception that is thrown when the + array is empty. + The exception that is thrown when the + argument specifies an invalid TaskContinuationOptions + value. + The exception that is thrown when one + of the elements in the array has been disposed. + The provided CancellationToken + has already been disposed. + + + The NotOn* and OnlyOn* TaskContinuationOptions, + which constrain for which TaskStatus states a continuation + will be executed, are illegal with ContinueWhenAll. + + + + + Creates a continuation Task + that will be started upon the completion of a set of provided Tasks. + + The type of the result that is returned by the + delegate and associated with the created . + The array of tasks from which to continue. + The function delegate to execute when all tasks in the + array have completed. + The new continuation . + The exception that is thrown when the + array is null. + The exception that is thrown when the + argument is null. + The exception that is thrown when the + array contains a null value. + The exception that is thrown when the + array is empty. + The exception that is thrown when one + of the elements in the array has been disposed. + + + + Creates a continuation Task + that will be started upon the completion of a set of provided Tasks. + + The type of the result that is returned by the + delegate and associated with the created . + The array of tasks from which to continue. + The function delegate to execute when all tasks in the + array have completed. + The CancellationToken + that will be assigned to the new continuation task. + The new continuation . + The exception that is thrown when the + array is null. + The exception that is thrown when the + argument is null. + The exception that is thrown when the + array contains a null value. + The exception that is thrown when the + array is empty. + The exception that is thrown when one + of the elements in the array has been disposed. + The provided CancellationToken + has already been disposed. + + + + + Creates a continuation Task + that will be started upon the completion of a set of provided Tasks. + + The type of the result that is returned by the + delegate and associated with the created . + The array of tasks from which to continue. + The function delegate to execute when all tasks in the + array have completed. + The + TaskContinuationOptions value that controls the behavior of + the created continuation Task. + The new continuation . + The exception that is thrown when the + array is null. + The exception that is thrown when the + argument is null. + The exception that is thrown when the + array contains a null value. + The exception that is thrown when the + array is empty. + The exception that is thrown when the + argument specifies an invalid TaskContinuationOptions + value. + The exception that is thrown when one + of the elements in the array has been disposed. + + The NotOn* and OnlyOn* TaskContinuationOptions, + which constrain for which TaskStatus states a continuation + will be executed, are illegal with ContinueWhenAll. + + + + + Creates a continuation Task + that will be started upon the completion of a set of provided Tasks. + + The type of the result that is returned by the + delegate and associated with the created . + The array of tasks from which to continue. + The function delegate to execute when all tasks in the + array have completed. + The CancellationToken + that will be assigned to the new continuation task. + The + TaskContinuationOptions value that controls the behavior of + the created continuation Task. + The TaskScheduler + that is used to schedule the created continuation . + The new continuation . + The exception that is thrown when the + array is null. + The exception that is thrown when the + argument is null. + The exception that is thrown when the + argument is null. + The exception that is thrown when the + array contains a null value. + The exception that is thrown when the + array is empty. + The exception that is thrown when the + argument specifies an invalid TaskContinuationOptions + value. + The exception that is thrown when one + of the elements in the array has been disposed. + The provided CancellationToken + has already been disposed. + + + The NotOn* and OnlyOn* TaskContinuationOptions, + which constrain for which TaskStatus states a continuation + will be executed, are illegal with ContinueWhenAll. + + + + + Creates a continuation Task + that will be started upon the completion of a set of provided Tasks. + + The type of the result that is returned by the + delegate and associated with the created . + The type of the result of the antecedent . + The array of tasks from which to continue. + The function delegate to execute when all tasks in the + array have completed. + The new continuation . + The exception that is thrown when the + array is null. + The exception that is thrown when the + argument is null. + The exception that is thrown when the + array contains a null value. + The exception that is thrown when the + array is empty. + The exception that is thrown when one + of the elements in the array has been disposed. + + + + Creates a continuation Task + that will be started upon the completion of a set of provided Tasks. + + The type of the result that is returned by the + delegate and associated with the created . + The type of the result of the antecedent . + The array of tasks from which to continue. + The function delegate to execute when all tasks in the + array have completed. + The CancellationToken + that will be assigned to the new continuation task. + The new continuation . + The exception that is thrown when the + array is null. + The exception that is thrown when the + argument is null. + The exception that is thrown when the + array contains a null value. + The exception that is thrown when the + array is empty. + The exception that is thrown when one + of the elements in the array has been disposed. + The provided CancellationToken + has already been disposed. + + + + + Creates a continuation Task + that will be started upon the completion of a set of provided Tasks. + + The type of the result that is returned by the + delegate and associated with the created . + The type of the result of the antecedent . + The array of tasks from which to continue. + The function delegate to execute when all tasks in the + array have completed. + The + TaskContinuationOptions value that controls the behavior of + the created continuation Task. + The new continuation . + The exception that is thrown when the + array is null. + The exception that is thrown when the + argument is null. + The exception that is thrown when the + array contains a null value. + The exception that is thrown when the + array is empty. + The exception that is thrown when the + argument specifies an invalid TaskContinuationOptions + value. + The exception that is thrown when one + of the elements in the array has been disposed. + + The NotOn* and OnlyOn* TaskContinuationOptions, + which constrain for which TaskStatus states a continuation + will be executed, are illegal with ContinueWhenAll. + + + + + Creates a continuation Task + that will be started upon the completion of a set of provided Tasks. + + The type of the result that is returned by the + delegate and associated with the created . + The type of the result of the antecedent . + The array of tasks from which to continue. + The function delegate to execute when all tasks in the + array have completed. + The CancellationToken + that will be assigned to the new continuation task. + The + TaskContinuationOptions value that controls the behavior of + the created continuation Task. + The TaskScheduler + that is used to schedule the created continuation . + The new continuation . + The exception that is thrown when the + array is null. + The exception that is thrown when the + argument is null. + The exception that is thrown when the + argument is null. + The exception that is thrown when the + array contains a null value. + The exception that is thrown when the + array is empty. + The exception that is thrown when the + argument specifies an invalid TaskContinuationOptions + value. + The exception that is thrown when one + of the elements in the array has been disposed. + The provided CancellationToken + has already been disposed. + + + The NotOn* and OnlyOn* TaskContinuationOptions, + which constrain for which TaskStatus states a continuation + will be executed, are illegal with ContinueWhenAll. + + + + + Creates a continuation Task + that will be started upon the completion of any Task in the provided set. + + The array of tasks from which to continue when one task completes. + The action delegate to execute when one task in the array completes. + The new continuation Task. + The exception that is thrown when the + array is null. + The exception that is thrown when the + argument is null. + The exception that is thrown when the + array contains a null value. + The exception that is thrown when the + array is empty. + The exception that is thrown when one + of the elements in the array has been disposed. + + + + Creates a continuation Task + that will be started upon the completion of any Task in the provided set. + + The array of tasks from which to continue when one task completes. + The action delegate to execute when one task in the array completes. + The CancellationToken + that will be assigned to the new continuation task. + The new continuation Task. + The exception that is thrown when the + array is null. + The exception that is thrown when the + argument is null. + The exception that is thrown when the + array contains a null value. + The exception that is thrown when the + array is empty. + The exception that is thrown when one + of the elements in the array has been disposed. + The provided CancellationToken + has already been disposed. + + + + + Creates a continuation Task + that will be started upon the completion of any Task in the provided set. + + The array of tasks from which to continue when one task completes. + The action delegate to execute when one task in the array completes. + The + TaskContinuationOptions value that controls the behavior of + the created continuation Task. + The new continuation Task. + The exception that is thrown when the + array is null. + The exception that is thrown when the + argument is null. + The exception that is thrown when the + array contains a null value. + The exception that is thrown when the + array is empty. + The exception that is thrown when the + argument specifies an invalid TaskContinuationOptions + value. + The exception that is thrown when one + of the elements in the array has been disposed. + + The NotOn* and OnlyOn* TaskContinuationOptions, + which constrain for which TaskStatus states a continuation + will be executed, are illegal with ContinueWhenAny. + + + + + Creates a continuation Task + that will be started upon the completion of any Task in the provided set. + + The array of tasks from which to continue when one task completes. + The action delegate to execute when one task in the array completes. + The CancellationToken + that will be assigned to the new continuation task. + The + TaskContinuationOptions value that controls the behavior of + the created continuation Task. + The TaskScheduler + that is used to schedule the created continuation Task. + The new continuation Task. + The exception that is thrown when the + array is null. + The exception that is thrown when the + argument is null. + The exception that is thrown when the + argument is null. + The exception that is thrown when the + array contains a null value. + The exception that is thrown when the + array is empty. + The exception that is thrown when the + argument specifies an invalid TaskContinuationOptions + value. + The exception that is thrown when one + of the elements in the array has been disposed. + The provided CancellationToken + has already been disposed. + + + The NotOn* and OnlyOn* TaskContinuationOptions, + which constrain for which TaskStatus states a continuation + will be executed, are illegal with ContinueWhenAny. + + + + + Creates a continuation Task + that will be started upon the completion of any Task in the provided set. + + The type of the result that is returned by the + delegate and associated with the created . + The array of tasks from which to continue when one task completes. + The function delegate to execute when one task in the + array completes. + The new continuation . + The exception that is thrown when the + array is null. + The exception that is thrown when the + argument is null. + The exception that is thrown when the + array contains a null value. + The exception that is thrown when the + array is empty. + The exception that is thrown when one + of the elements in the array has been disposed. + + + + Creates a continuation Task + that will be started upon the completion of any Task in the provided set. + + The type of the result that is returned by the + delegate and associated with the created . + The array of tasks from which to continue when one task completes. + The function delegate to execute when one task in the + array completes. + The CancellationToken + that will be assigned to the new continuation task. + The new continuation . + The exception that is thrown when the + array is null. + The exception that is thrown when the + argument is null. + The exception that is thrown when the + array contains a null value. + The exception that is thrown when the + array is empty. + The exception that is thrown when one + of the elements in the array has been disposed. + The provided CancellationToken + has already been disposed. + + + + + Creates a continuation Task + that will be started upon the completion of any Task in the provided set. + + The type of the result that is returned by the + delegate and associated with the created . + The array of tasks from which to continue when one task completes. + The function delegate to execute when one task in the + array completes. + The + TaskContinuationOptions value that controls the behavior of + the created continuation Task. + The new continuation . + The exception that is thrown when the + array is null. + The exception that is thrown when the + argument is null. + The exception that is thrown when the + array contains a null value. + The exception that is thrown when the + array is empty. + The exception that is thrown when the + argument specifies an invalid TaskContinuationOptions + value. + The exception that is thrown when one + of the elements in the array has been disposed. + + The NotOn* and OnlyOn* TaskContinuationOptions, + which constrain for which TaskStatus states a continuation + will be executed, are illegal with ContinueWhenAny. + + + + + Creates a continuation Task + that will be started upon the completion of any Task in the provided set. + + The type of the result that is returned by the + delegate and associated with the created . + The array of tasks from which to continue when one task completes. + The function delegate to execute when one task in the + array completes. + The CancellationToken + that will be assigned to the new continuation task. + The + TaskContinuationOptions value that controls the behavior of + the created continuation Task. + The TaskScheduler + that is used to schedule the created continuation . + The new continuation . + The exception that is thrown when the + array is null. + The exception that is thrown when the + argument is null. + The exception that is thrown when the + argument is null. + The exception that is thrown when the + array contains a null value. + The exception that is thrown when the + array is empty. + The exception that is thrown when the + argument specifies an invalid TaskContinuationOptions + value. + The exception that is thrown when one + of the elements in the array has been disposed. + The provided CancellationToken + has already been disposed. + + + The NotOn* and OnlyOn* TaskContinuationOptions, + which constrain for which TaskStatus states a continuation + will be executed, are illegal with ContinueWhenAny. + + + + + Creates a continuation Task + that will be started upon the completion of any Task in the provided set. + + The type of the result that is returned by the + delegate and associated with the created . + The type of the result of the antecedent . + The array of tasks from which to continue when one task completes. + The function delegate to execute when one task in the + array completes. + The new continuation . + The exception that is thrown when the + array is null. + The exception that is thrown when the + argument is null. + The exception that is thrown when the + array contains a null value. + The exception that is thrown when the + array is empty. + The exception that is thrown when one + of the elements in the array has been disposed. + + + + Creates a continuation Task + that will be started upon the completion of any Task in the provided set. + + The type of the result that is returned by the + delegate and associated with the created . + The type of the result of the antecedent . + The array of tasks from which to continue when one task completes. + The function delegate to execute when one task in the + array completes. + The CancellationToken + that will be assigned to the new continuation task. + The new continuation . + The exception that is thrown when the + array is null. + The exception that is thrown when the + argument is null. + The exception that is thrown when the + array contains a null value. + The exception that is thrown when the + array is empty. + The exception that is thrown when one + of the elements in the array has been disposed. + The provided CancellationToken + has already been disposed. + + + + + Creates a continuation Task + that will be started upon the completion of any Task in the provided set. + + The type of the result that is returned by the + delegate and associated with the created . + The type of the result of the antecedent . + The array of tasks from which to continue when one task completes. + The function delegate to execute when one task in the + array completes. + The + TaskContinuationOptions value that controls the behavior of + the created continuation Task. + The new continuation . + The exception that is thrown when the + array is null. + The exception that is thrown when the + argument is null. + The exception that is thrown when the + array contains a null value. + The exception that is thrown when the + array is empty. + The exception that is thrown when the + argument specifies an invalid TaskContinuationOptions + value. + The exception that is thrown when one + of the elements in the array has been disposed. + + The NotOn* and OnlyOn* TaskContinuationOptions, + which constrain for which TaskStatus states a continuation + will be executed, are illegal with ContinueWhenAny. + + + + + Creates a continuation Task + that will be started upon the completion of any Task in the provided set. + + The type of the result that is returned by the + delegate and associated with the created . + The type of the result of the antecedent . + The array of tasks from which to continue when one task completes. + The function delegate to execute when one task in the + array completes. + The CancellationToken + that will be assigned to the new continuation task. + The + TaskContinuationOptions value that controls the behavior of + the created continuation Task. + The TaskScheduler + that is used to schedule the created continuation . + The new continuation . + The exception that is thrown when the + array is null. + The exception that is thrown when the + argument is null. + The exception that is thrown when the + argument is null. + The exception that is thrown when the + array contains a null value. + The exception that is thrown when the + array is empty. + The exception that is thrown when the + argument specifies an invalid TaskContinuationOptions + value. + The exception that is thrown when one + of the elements in the array has been disposed. + The provided CancellationToken + has already been disposed. + + + The NotOn* and OnlyOn* TaskContinuationOptions, + which constrain for which TaskStatus states a continuation + will be executed, are illegal with ContinueWhenAny. + + + + + Creates a continuation Task + that will be started upon the completion of any Task in the provided set. + + The type of the result of the antecedent . + The array of tasks from which to continue when one task completes. + The action delegate to execute when one task in the + array completes. + The new continuation . + The exception that is thrown when the + array is null. + The exception that is thrown when the + argument is null. + The exception that is thrown when the + array contains a null value. + The exception that is thrown when the + array is empty. + The exception that is thrown when one + of the elements in the array has been disposed. + + + + Creates a continuation Task + that will be started upon the completion of any Task in the provided set. + + The type of the result of the antecedent . + The array of tasks from which to continue when one task completes. + The action delegate to execute when one task in the + array completes. + The CancellationToken + that will be assigned to the new continuation task. + The new continuation . + The exception that is thrown when the + array is null. + The exception that is thrown when the + argument is null. + The exception that is thrown when the + array contains a null value. + The exception that is thrown when the + array is empty. + The exception that is thrown when one + of the elements in the array has been disposed. + The provided CancellationToken + has already been disposed. + + + + + Creates a continuation Task + that will be started upon the completion of any Task in the provided set. + + The type of the result of the antecedent . + The array of tasks from which to continue when one task completes. + The action delegate to execute when one task in the + array completes. + The + TaskContinuationOptions value that controls the behavior of + the created continuation Task. + The new continuation . + The exception that is thrown when the + array is null. + The exception that is thrown when the + argument is null. + The exception that is thrown when the + array contains a null value. + The exception that is thrown when the + array is empty. + The exception that is thrown when the + argument specifies an invalid TaskContinuationOptions + value. + The exception that is thrown when one + of the elements in the array has been disposed. + + The NotOn* and OnlyOn* TaskContinuationOptions, + which constrain for which TaskStatus states a continuation + will be executed, are illegal with ContinueWhenAny. + + + + + Creates a continuation Task + that will be started upon the completion of any Task in the provided set. + + The type of the result of the antecedent . + The array of tasks from which to continue when one task completes. + The action delegate to execute when one task in the + array completes. + The CancellationToken + that will be assigned to the new continuation task. + The + TaskContinuationOptions value that controls the behavior of + the created continuation Task. + The TaskScheduler + that is used to schedule the created continuation . + The new continuation . + The exception that is thrown when the + array is null. + The exception that is thrown when the + argument is null. + The exception that is thrown when the + argument is null. + The exception that is thrown when the + array contains a null value. + The exception that is thrown when the + array is empty. + The exception that is thrown when the + argument specifies an invalid TaskContinuationOptions + value. + The exception that is thrown when one + of the elements in the array has been disposed. + The provided CancellationToken + has already been disposed. + + + The NotOn* and OnlyOn* TaskContinuationOptions, + which constrain for which TaskStatus states a continuation + will be executed, are illegal with ContinueWhenAny. + + + + + Gets the default CancellationToken of this + TaskFactory. + + + This property returns the default that will be assigned to all + tasks created by this factory unless another CancellationToken value is explicitly specified + during the call to the factory methods. + + + + + Gets the TaskScheduler of this + TaskFactory. + + + This property returns the default scheduler for this factory. It will be used to schedule all + tasks unless another scheduler is explicitly specified during calls to this factory's methods. + If null, TaskScheduler.Current + will be used. + + + + + Gets the TaskCreationOptions + value of this TaskFactory. + + + This property returns the default creation options for this factory. They will be used to create all + tasks unless other options are explicitly specified during calls to this factory's methods. + + + + + Gets the TaskContinuationOptions + value of this TaskFactory. + + + This property returns the default continuation options for this factory. They will be used to create + all continuation tasks unless other options are explicitly specified during calls to this factory's methods. + + + + + Represents the producer side of a unbound to a + delegate, providing access to the consumer side through the property. + + + + It is often the case that a is desired to + represent another asynchronous operation. + TaskCompletionSource is provided for this purpose. It enables + the creation of a task that can be handed out to consumers, and those consumers can use the members + of the task as they would any other. However, unlike most tasks, the state of a task created by a + TaskCompletionSource is controlled explicitly by the methods on TaskCompletionSource. This enables the + completion of the external asynchronous operation to be propagated to the underlying Task. The + separation also ensures that consumers are not able to transition the state without access to the + corresponding TaskCompletionSource. + + + All members of are thread-safe + and may be used from multiple threads concurrently. + + + The type of the result value assocatied with this . + + + + Creates a . + + + + + Creates a + with the specified options. + + + The created + by this instance and accessible through its property + will be instantiated using the specified . + + The options to use when creating the underlying + . + + The represent options invalid for use + with a . + + + + + Creates a + with the specified state. + + The state to use as the underlying + 's AsyncState. + + + + Creates a with + the specified state and options. + + The options to use when creating the underlying + . + The state to use as the underlying + 's AsyncState. + + The represent options invalid for use + with a . + + + + + Attempts to transition the underlying + into the + Faulted + state. + + The exception to bind to this . + True if the operation was successful; otherwise, false. + This operation will return false if the + is already in one + of the three final states: + RanToCompletion, + Faulted, or + Canceled. + + The argument is null. + The was disposed. + + + + Attempts to transition the underlying + into the + Faulted + state. + + The collection of exceptions to bind to this . + True if the operation was successful; otherwise, false. + This operation will return false if the + is already in one + of the three final states: + RanToCompletion, + Faulted, or + Canceled. + + The argument is null. + There are one or more null elements in . + The collection is empty. + The was disposed. + + + + Transitions the underlying + into the + Faulted + state. + + The exception to bind to this . + The argument is null. + + The underlying is already in one + of the three final states: + RanToCompletion, + Faulted, or + Canceled. + + The was disposed. + + + + Transitions the underlying + into the + Faulted + state. + + The collection of exceptions to bind to this . + The argument is null. + There are one or more null elements in . + + The underlying is already in one + of the three final states: + RanToCompletion, + Faulted, or + Canceled. + + The was disposed. + + + + Attempts to transition the underlying + into the + RanToCompletion + state. + + The result value to bind to this . + True if the operation was successful; otherwise, false. + This operation will return false if the + is already in one + of the three final states: + RanToCompletion, + Faulted, or + Canceled. + + The was disposed. + + + + Transitions the underlying + into the + RanToCompletion + state. + + The result value to bind to this . + + The underlying is already in one + of the three final states: + RanToCompletion, + Faulted, or + Canceled. + + The was disposed. + + + + Transitions the underlying + into the + Canceled + state. + + + The underlying is already in one + of the three final states: + RanToCompletion, + Faulted, or + Canceled. + + The was disposed. + + + + Attempts to transition the underlying + into the + Canceled + state. + + True if the operation was successful; otherwise, false. + This operation will return false if the + is already in one + of the three final states: + RanToCompletion, + Faulted, or + Canceled. + + The was disposed. + + + + Gets the created + by this . + + + This property enables a consumer access to the that is controlled by this instance. + The , , + , and + methods (and their "Try" variants) on this instance all result in the relevant state + transitions on this underlying Task. + + + + + Represents an abstract scheduler for tasks. + + + + TaskScheduler acts as the extension point for all + pluggable scheduling logic. This includes mechanisms such as how to schedule a task for execution, and + how scheduled tasks should be exposed to debuggers. + + + All members of the abstract type are thread-safe + and may be used from multiple threads concurrently. + + + + + + Queues a Task to the scheduler. + + + + A class derived from TaskScheduler + implements this method to accept tasks being scheduled on the scheduler. + A typical implementation would store the task in an internal data structure, which would + be serviced by threads that would execute those tasks at some time in the future. + + + This method is only meant to be called by the .NET Framework and + should not be called directly by the derived class. This is necessary + for maintaining the consistency of the system. + + + The Task to be queued. + The argument is null. + + + + Determines whether the provided Task + can be executed synchronously in this call, and if it can, executes it. + + + + A class derived from TaskScheduler implements this function to + support inline execution of a task on a thread that initiates a wait on that task object. Inline + execution is optional, and the request may be rejected by returning false. However, better + scalability typically results the more tasks that can be inlined, and in fact a scheduler that + inlines too little may be prone to deadlocks. A proper implementation should ensure that a + request executing under the policies guaranteed by the scheduler can successfully inline. For + example, if a scheduler uses a dedicated thread to execute tasks, any inlining requests from that + thread should succeed. + + + If a scheduler decides to perform the inline execution, it should do so by calling to the base + TaskScheduler's + TryExecuteTask method with the provided task object, propagating + the return value. It may also be appropriate for the scheduler to remove an inlined task from its + internal data structures if it decides to honor the inlining request. Note, however, that under + some circumstances a scheduler may be asked to inline a task that was not previously provided to + it with the method. + + + The derived scheduler is responsible for making sure that the calling thread is suitable for + executing the given task as far as its own scheduling and execution policies are concerned. + + + The Task to be + executed. + A Boolean denoting whether or not task has previously been + queued. If this parameter is True, then the task may have been previously queued (scheduled); if + False, then the task is known not to have been queued, and this call is being made in order to + execute the task inline without queueing it. + A Boolean value indicating whether the task was executed inline. + The argument is + null. + The was already + executed. + + + + Generates an enumerable of Task instances + currently queued to the scheduler waiting to be executed. + + + + A class derived from implements this method in order to support + integration with debuggers. This method will only be invoked by the .NET Framework when the + debugger requests access to the data. The enumerable returned will be traversed by debugging + utilities to access the tasks currently queued to this scheduler, enabling the debugger to + provide a representation of this information in the user interface. + + + It is important to note that, when this method is called, all other threads in the process will + be frozen. Therefore, it's important to avoid synchronization with other threads that may lead to + blocking. If synchronization is necessary, the method should prefer to throw a + than to block, which could cause a debugger to experience delays. Additionally, this method and + the enumerable returned must not modify any globally visible state. + + + The returned enumerable should never be null. If there are currently no queued tasks, an empty + enumerable should be returned instead. + + + For developers implementing a custom debugger, this method shouldn't be called directly, but + rather this functionality should be accessed through the internal wrapper method + GetScheduledTasksForDebugger: + internal Task[] GetScheduledTasksForDebugger(). This method returns an array of tasks, + rather than an enumerable. In order to retrieve a list of active schedulers, a debugger may use + another internal method: internal static TaskScheduler[] GetTaskSchedulersForDebugger(). + This static method returns an array of all active TaskScheduler instances. + GetScheduledTasksForDebugger then may be used on each of these scheduler instances to retrieve + the list of scheduled tasks for each. + + + An enumerable that allows traversal of tasks currently queued to this scheduler. + + + This scheduler is unable to generate a list of queued tasks at this time. + + + + + Retrieves some thread static state that can be cached and passed to multiple + TryRunInline calls, avoiding superflous TLS fetches. + + A bag of TLS state (or null if none exists). + + + + Attempts to execute the target task synchronously. + + The task to run. + True if the task may have been previously queued, + false if the task was absolutely not previously queued. + The state retrieved from GetThreadStatics + True if it ran, false otherwise. + + + + Attempts to dequeue a Task that was previously queued to + this scheduler. + + The Task to be dequeued. + A Boolean denoting whether the argument was successfully dequeued. + The argument is null. + + + + Notifies the scheduler that a work item has made progress. + + + + + Initializes the . + + + + + Frees all resources associated with this scheduler. + + + + + Creates a + associated with the current . + + + All Task instances queued to + the returned scheduler will be executed through a call to the + Post method + on that context. + + + A associated with + the current SynchronizationContext, as + determined by SynchronizationContext.Current. + + + The current SynchronizationContext may not be used as a TaskScheduler. + + + + + Attempts to execute the provided Task + on this scheduler. + + + + Scheduler implementations are provided with Task + instances to be executed through either the method or the + method. When the scheduler deems it appropriate to run the + provided task, should be used to do so. TryExecuteTask handles all + aspects of executing a task, including action invocation, exception handling, state management, + and lifecycle control. + + + must only be used for tasks provided to this scheduler by the .NET + Framework infrastructure. It should not be used to execute arbitrary tasks obtained through + custom mechanisms. + + + + A Task object to be executed. + + The is not associated with this scheduler. + + A Boolean that is true if was successfully executed, false if it + was not. A common reason for execution failure is that the task had previously been executed or + is in the process of being executed by another thread. + + + + Provides an array of all queued Task instances + for the debugger. + + + The returned array is populated through a call to . + Note that this function is only meant to be invoked by a debugger remotely. + It should not be called by any other codepaths. + + An array of Task instances. + + This scheduler is unable to generate a list of queued tasks at this time. + + + + + Provides an array of all active TaskScheduler + instances for the debugger. + + + This function is only meant to be invoked by a debugger remotely. + It should not be called by any other codepaths. + + An array of TaskScheduler instances. + + + + Registers a new TaskScheduler instance in the global collection of schedulers. + + + + + Removes a TaskScheduler instance from the global collection of schedulers. + + + + + Indicates the maximum concurrency level this + is able to support. + + + + + Indicates whether this is a custom scheduler, in which case the safe code paths will be taken upon task entry + using a CAS to transition from queued state to executing. + + + + + Gets the default TaskScheduler instance. + + + + + Gets the TaskScheduler + associated with the currently executing task. + + + When not called from within a task, will return the scheduler. + + + + + Gets the unique ID for this . + + + + + Occurs when a faulted 's unobserved exception is about to trigger exception escalation + policy, which, by default, would terminate the process. + + + This AppDomain-wide event provides a mechanism to prevent exception + escalation policy (which, by default, terminates the process) from triggering. + Each handler is passed a + instance, which may be used to examine the exception and to mark it as observed. + + + + + Nested class that provides debugger view for TaskScheduler + + + + + A TaskScheduler implementation that executes all tasks queued to it through a call to + on the + that its associated with. The default constructor for this class binds to the current + + + + + Constructs a SynchronizationContextTaskScheduler associated with + + This constructor expects to be set. + + + + Implemetation of for this scheduler class. + + Simply posts the tasks to be executed on the associated . + + + + + + Implementation of for this scheduler class. + + The task will be executed inline only if the call happens within + the associated . + + + + + + + Implementes the property for + this scheduler class. + + By default it returns 1, because a based + scheduler only supports execution on a single thread. + + + + + Provides data for the event that is raised when a faulted 's + exception goes unobserved. + + + The Exception property is used to examine the exception without marking it + as observed, whereas the method is used to mark the exception + as observed. Marking the exception as observed prevents it from triggering exception escalation policy + which, by default, terminates the process. + + + + + Initializes a new instance of the class + with the unobserved exception. + + The Exception that has gone unobserved. + + + + Marks the as "observed," thus preventing it + from triggering exception escalation policy which, by default, terminates the process. + + + + + Gets whether this exception has been marked as "observed." + + + + + The Exception that went unobserved. + + + + + An implementation of TaskScheduler that uses the ThreadPool scheduler + + + + + Constructs a new ThreadPool task scheduler object + + + + + Schedules a task to the ThreadPool. + + The task to schedule. + + + + This internal function will do this: + (1) If the task had previously been queued, attempt to pop it and return false if that fails. + (2) Propagate the return value from Task.ExecuteEntry() back to the caller. + + IMPORTANT NOTE: TryExecuteTaskInline will NOT throw task exceptions itself. Any wait code path using this function needs + to account for exceptions that need to be propagated, and throw themselves accordingly. + + + + + Notifies the scheduler that work is progressing (no-op). + + + + + This is the only scheduler that returns false for this property, indicating that the task entry codepath is unsafe (CAS free) + since we know that the underlying scheduler already takes care of atomic transitions from queued to non-queued. + + + + + Represents an exception used to communicate an invalid operation by a + . + + + + + Initializes a new instance of the class. + + + + + Initializes a new instance of the + class with a specified error message. + + The error message that explains the reason for the exception. + + + + Initializes a new instance of the + class using the default error message and a reference to the inner exception that is the cause of + this exception. + + The exception that is the cause of the current exception. + + + + Initializes a new instance of the + class with a specified error message and a reference to the inner exception that is the cause of + this exception. + + The error message that explains the reason for the exception. + The exception that is the cause of the current exception. + + + + Initializes a new instance of the + class with serialized data. + + The that holds + the serialized object data about the exception being thrown. + The that + contains contextual information about the source or destination. + + + + The exception that is thrown when the post-phase action of a fails. + + + + + Initializes a new instance of the class. + + + + + Initializes a new instance of the class with the specified inner exception. + + The exception that is the cause of the current exception. + + + + Initializes a new instance of the class with a specified error message. + + A string that describes the exception. + + + + Initializes a new instance of the class with a specified error message and inner exception. + + A string that describes the exception. + The exception that is the cause of the current exception. + + + + Initializes a new instance of the class with serialized data. + + The object that holds the serialized object data. + An object that describes the source or destination of the serialized data. + + + + Enables multiple tasks to cooperatively work on an algorithm in parallel through multiple phases. + + + + A group of tasks cooperate by moving through a series of phases, where each in the group signals it + has arrived at the in a given phase and implicitly waits for all others to + arrive. The same can be used for multiple phases. + + + All public and protected members of are thread-safe and may be used + concurrently from multiple threads, with the exception of Dispose, which + must only be used when all other operations on the have + completed. + + + + + + Initializes a new instance of the class. + + The number of participating threads. + is less than 0 + or greater than . + + + + Initializes a new instance of the class. + + The number of participating threads. + The to be executed after each + phase. + is less than 0 + or greater than . + + The delegate will be executed after + all participants have arrived at the barrier in one phase. The participants + will not be released to the next phase until the postPhaseAction delegate + has completed execution. + + + + + Extract the three variables current, total and sense from a given big variable + + The integer variable that contains the other three variables + The current cparticipant count + The total participants count + The sense flag + + + + Write the three variables current. total and the sense to the m_currentTotal + + The old current total to compare + The current cparticipant count + The total participants count + The sense flag + True if the CAS succeeded, false otherwise + + + + Notifies the that there will be an additional participant. + + The phase number of the barrier in which the new participants will first + participate. + + Adding a participant would cause the barrier's participant count to + exceed . + + + The method was invoked from within a post-phase action. + + The current instance has already been + disposed. + + + + Notifies the that there will be additional participants. + + The number of additional participants to add to the + barrier. + The phase number of the barrier in which the new participants will first + participate. + is less than + 0. + Adding participants would cause the + barrier's participant count to exceed . + + The method was invoked from within a post-phase action. + + The current instance has already been + disposed. + + + + Notifies the that there will be one less participant. + + The barrier already has 0 + participants. + + The method was invoked from within a post-phase action. + + The current instance has already been + disposed. + + + + Notifies the that there will be fewer participants. + + The number of additional participants to remove from the barrier. + is less than + 0. + The barrier already has 0 participants. + + The method was invoked from within a post-phase action. + + The current instance has already been + disposed. + + + + Signals that a participant has reached the and waits for all other + participants to reach the barrier as well. + + + The method was invoked from within a post-phase action, the barrier currently has 0 participants, + or the barrier is being used by more threads than are registered as participants. + + The current instance has already been + disposed. + + + + Signals that a participant has reached the and waits for all other + participants to reach the barrier, while observing a . + + The to + observe. + + The method was invoked from within a post-phase action, the barrier currently has 0 participants, + or the barrier is being used by more threads than are registered as participants. + + has been + canceled. + The current instance has already been + disposed. + + + + Signals that a participant has reached the and waits for all other + participants to reach the barrier as well, using a + to measure the time interval. + + A that represents the number of + milliseconds to wait, or a that represents -1 milliseconds to + wait indefinitely. + true if all other participants reached the barrier; otherwise, false. + is a negative number + other than -1 milliseconds, which represents an infinite time-out, or it is greater than + . + + The method was invoked from within a post-phase action, the barrier currently has 0 participants, + or the barrier is being used by more threads than are registered as participants. + + The current instance has already been + disposed. + + + + Signals that a participant has reached the and waits for all other + participants to reach the barrier as well, using a + to measure the time interval, while observing a . + + A that represents the number of + milliseconds to wait, or a that represents -1 milliseconds to + wait indefinitely. + The to + observe. + true if all other participants reached the barrier; otherwise, false. + is a negative number + other than -1 milliseconds, which represents an infinite time-out. + + The method was invoked from within a post-phase action, the barrier currently has 0 participants, + or the barrier is being used by more threads than are registered as participants. + + has been + canceled. + The current instance has already been + disposed. + + + + Signals that a participant has reached the and waits for all other + participants to reach the barrier as well, using a + 32-bit signed integer to measure the time interval. + + The number of milliseconds to wait, or (-1) to wait indefinitely. + true if all other participants reached the barrier; otherwise, false. + is a + negative number other than -1, which represents an infinite time-out. + + The method was invoked from within a post-phase action, the barrier currently has 0 participants, + or the barrier is being used by more threads than are registered as participants. + + The current instance has already been + disposed. + + + + Signals that a participant has reached the barrier and waits for all other participants to reach + the barrier as well, using a + 32-bit signed integer to measure the time interval, while observing a . + + The number of milliseconds to wait, or (-1) to wait indefinitely. + The to + observe. + true if all other participants reached the barrier; otherwise, false. + is a + negative number other than -1, which represents an infinite time-out. + + The method was invoked from within a post-phase action, the barrier currently has 0 participants, + or the barrier is being used by more threads than are registered as participants. + + has been + canceled. + The current instance has already been + disposed. + + + + Finish the phase by invoking the post phase action, and setting the event, this must be called by the + last arrival thread + + The current phase sense + + + + Sets the current phase event and reset the next phase event + + The current phase sense + + + + Releases all resources used by the current instance of . + + + The method was invoked from within a post-phase action. + + + Unlike most of the members of , Dispose is not thread-safe and may not be + used concurrently with other members of this instance. + + + + + When overridden in a derived class, releases the unmanaged resources used by the + , and optionally releases the managed resources. + + true to release both managed and unmanaged resources; false to release + only unmanaged resources. + + Unlike most of the members of , Dispose is not thread-safe and may not be + used concurrently with other members of this instance. + + + + + Throw ObjectDisposedException if the barrier is disposed + + + + + Gets the number of participants in the barrier that haven’t yet signaled + in the current phase. + + + This could be 0 during a post-phase action delegate execution or if the + ParticipantCount is 0. + + + + + Gets the total number of participants in the barrier. + + + + + Gets the number of the barrier's current phase. + + + + + Provides blocking and bounding capabilities for thread-safe collections that + implement . + + + represents a collection + that allows for thread-safe adding and removing of data. + is used as a wrapper + for an instance, allowing + removal attempts from the collection to block until data is available to be removed. Similarly, + a can be created to enforce + an upper-bound on the number of data elements allowed in the + ; addition attempts to the + collection may then block until space is available to store the added items. In this manner, + is similar to a traditional + blocking queue data structure, except that the underlying data storage mechanism is abstracted + away as an . + + Specifies the type of elements in the collection. + + + Initializes a new instance of the + + class without an upper-bound. + + + The default underlying collection is a ConcurrentQueue<T>. + + + + Initializes a new instance of the + class with the specified upper-bound. + + The bounded size of the collection. + The is + not a positive value. + + The default underlying collection is a ConcurrentQueue<T>. + + + + Initializes a new instance of the + class with the specified upper-bound and using the provided + as its underlying data store. + The collection to use as the underlying data store. + The bounded size of the collection. + The argument is + null. + The is not a positive value. + The supplied contains more values + than is permitted by . + + + Initializes a new instance of the + class without an upper-bound and using the provided + as its underlying data store. + The collection to use as the underlying data store. + The argument is + null. + + + Initializes the BlockingCollection instance. + The collection to use as the underlying data store. + The bounded size of the collection. + The number of items currently in the underlying collection. + + + + Adds the item to the . + + The item to be added to the collection. The value can be a null reference. + The has been marked + as complete with regards to additions. + The has been disposed. + The underlying collection didn't accept the item. + + If a bounded capacity was specified when this instance of + was initialized, + a call to Add may block until space is available to store the provided item. + + + + + Adds the item to the . + A is thrown if the is + canceled. + + The item to be added to the collection. The value can be a null reference. + A cancellation token to observe. + If the is canceled. + The has been marked + as complete with regards to additions. + The has been disposed. + The underlying collection didn't accept the item. + + If a bounded capacity was specified when this instance of + was initialized, + a call to may block until space is available to store the provided item. + + + + + Attempts to add the specified item to the . + + The item to be added to the collection. + true if the could be added; otherwise, false. + The has been marked + as complete with regards to additions. + The has been disposed. + The underlying collection didn't accept the item. + + + + Attempts to add the specified item to the . + + The item to be added to the collection. + A that represents the number of milliseconds + to wait, or a that represents -1 milliseconds to wait indefinitely. + + true if the could be added to the collection within + the alloted time; otherwise, false. + The has been marked + as complete with regards to additions. + The has been disposed. + is a negative number + other than -1 milliseconds, which represents an infinite time-out -or- timeout is greater than + . + The underlying collection didn't accept the item. + + + + Attempts to add the specified item to the . + + The item to be added to the collection. + The number of milliseconds to wait, or (-1) to wait indefinitely. + true if the could be added to the collection within + the alloted time; otherwise, false. + The has been marked + as complete with regards to additions. + The has been disposed. + is a + negative number other than -1, which represents an infinite time-out. + The underlying collection didn't accept the item. + + + + Attempts to add the specified item to the . + A is thrown if the is + canceled. + + The item to be added to the collection. + The number of milliseconds to wait, or (-1) to wait indefinitely. + A cancellation token to observe. + true if the could be added to the collection within + the alloted time; otherwise, false. + If the is canceled. + The has been marked + as complete with regards to additions. + The has been disposed. + is a + negative number other than -1, which represents an infinite time-out. + The underlying collection didn't accept the item. + + + Adds an item into the underlying data store using its IProducerConsumerCollection<T>.Add + method. If a bounded capacity was specified and the collection was full, + this method will wait for, at most, the timeout period trying to add the item. + If the timeout period was exhaused before successfully adding the item this method will + return false. + The item to be added to the collection. + The number of milliseconds to wait for the collection to accept the item, + or Timeout.Infinite to wait indefinitely. + A cancellation token to observe. + False if the collection remained full till the timeout period was exhausted.True otherwise. + If the is canceled. + the collection has already been marked + as complete with regards to additions. + If the collection has been disposed. + The underlying collection didn't accept the item. + + + Takes an item from the . + The item removed from the collection. + The is empty and has been marked + as complete with regards to additions. + The has been disposed. + The underlying collection was modified + outside of this instance. + A call to may block until an item is available to be removed. + + + Takes an item from the . + The item removed from the collection. + If the is + canceled or the is empty and has been marked + as complete with regards to additions. + The has been disposed. + The underlying collection was modified + outside of this instance. + A call to may block until an item is available to be removed. + + + + Attempts to remove an item from the . + + The item removed from the collection. + true if an item could be removed; otherwise, false. + The has been disposed. + The underlying collection was modified + outside of this instance. + + + + Attempts to remove an item from the . + + The item removed from the collection. + A that represents the number of milliseconds + to wait, or a that represents -1 milliseconds to wait indefinitely. + + true if an item could be removed from the collection within + the alloted time; otherwise, false. + The has been disposed. + is a negative number + other than -1 milliseconds, which represents an infinite time-out -or- timeout is greater than + . + The underlying collection was modified + outside of this instance. + + + + Attempts to remove an item from the . + + The item removed from the collection. + The number of milliseconds to wait, or (-1) to wait indefinitely. + true if an item could be removed from the collection within + the alloted time; otherwise, false. + The has been disposed. + is a + negative number other than -1, which represents an infinite time-out. + The underlying collection was modified + outside of this instance. + + + + Attempts to remove an item from the . + A is thrown if the is + canceled. + + The item removed from the collection. + The number of milliseconds to wait, or (-1) to wait indefinitely. + A cancellation token to observe. + true if an item could be removed from the collection within + the alloted time; otherwise, false. + If the is canceled. + The has been disposed. + is a + negative number other than -1, which represents an infinite time-out. + The underlying collection was modified + outside of this instance. + + + Takes an item from the underlying data store using its IProducerConsumerCollection<T>.Take + method. If the collection was empty, this method will wait for, at most, the timeout period (if AddingIsCompleted is false) + trying to remove an item. If the timeout period was exhaused before successfully removing an item + this method will return false. + A is thrown if the is + canceled. + + The item removed from the collection. + The number of milliseconds to wait for the collection to have an item available + for removal, or Timeout.Infinite to wait indefinitely. + A cancellation token to observe. + A combined cancellation token if created, it is only created by GetConsumingEnumerable to avoid creating the linked token + multiple times. + False if the collection remained empty till the timeout period was exhausted. True otherwise. + If the is canceled. + If the collection has been disposed. + + + + Adds the specified item to any one of the specified + instances. + + The array of collections. + The item to be added to one of the collections. + The index of the collection in the array to which the item was added. + The argument is + null. + The argument is + a 0-length array or contains a null element, or at least one of collections has been + marked as complete for adding. + At least one of the instances has been disposed. + At least one underlying collection didn't accept the item. + The count of is greater than the maximum size of + 62 for STA and 63 for MTA. + + If a bounded capacity was specified when all of the + instances were initialized, + a call to AddToAny may block until space is available in one of the collections + to store the provided item. + + + + + Adds the specified item to any one of the specified + instances. + A is thrown if the is + canceled. + + The array of collections. + The item to be added to one of the collections. + A cancellation token to observe. + The index of the collection in the array to which the item was added. + If the is canceled. + The argument is + null. + The argument is + a 0-length array or contains a null element, or at least one of collections has been + marked as complete for adding. + At least one of the instances has been disposed. + At least one underlying collection didn't accept the item. + The count of is greater than the maximum size of + 62 for STA and 63 for MTA. + + If a bounded capacity was specified when all of the + instances were initialized, + a call to AddToAny may block until space is available in one of the collections + to store the provided item. + + + + + Attempts to add the specified item to any one of the specified + instances. + + The array of collections. + The item to be added to one of the collections. + The index of the collection in the + array to which the item was added, or -1 if the item could not be added. + The argument is + null. + The argument is + a 0-length array or contains a null element, or at least one of collections has been + marked as complete for adding. + At least one of the instances has been disposed. + At least one underlying collection didn't accept the item. + The count of is greater than the maximum size of + 62 for STA and 63 for MTA. + + + + Attempts to add the specified item to any one of the specified + instances. + + The array of collections. + The item to be added to one of the collections. + A that represents the number of milliseconds + to wait, or a that represents -1 milliseconds to wait indefinitely. + + The index of the collection in the + array to which the item was added, or -1 if the item could not be added. + The argument is + null. + The argument is + a 0-length array or contains a null element, or at least one of collections has been + marked as complete for adding. + At least one of the instances has been disposed. + is a negative number + other than -1 milliseconds, which represents an infinite time-out -or- timeout is greater than + . + At least one underlying collection didn't accept the item. + The count of is greater than the maximum size of + 62 for STA and 63 for MTA. + + + + Attempts to add the specified item to any one of the specified + instances. + + The array of collections. + The item to be added to one of the collections. + The number of milliseconds to wait, or (-1) to wait indefinitely. /// The index of the collection in the + array to which the item was added, or -1 if the item could not be added. + The argument is + null. + The argument is + a 0-length array or contains a null element, or at least one of collections has been + marked as complete for adding. + At least one of the instances has been disposed. + is a + negative number other than -1, which represents an infinite time-out. + At least one underlying collection didn't accept the item. + The count of is greater than the maximum size of + 62 for STA and 63 for MTA. + + + + Attempts to add the specified item to any one of the specified + instances. + A is thrown if the is + canceled. + + The array of collections. + The item to be added to one of the collections. + The number of milliseconds to wait, or (-1) to wait indefinitely. /// The index of the collection in the + array to which the item was added, or -1 if the item could not be added. + A cancellation token to observe. + If the is canceled. + The argument is + null. + The argument is + a 0-length array or contains a null element, or at least one of collections has been + marked as complete for adding. + At least one of the instances has been disposed. + is a + negative number other than -1, which represents an infinite time-out. + At least one underlying collection didn't accept the item. + The count of is greater than the maximum size of + 62 for STA and 63 for MTA. + + + Adds/Takes an item to/from anyone of the specified collections. + A is thrown if the is + canceled. + + The collections into which the item can be added. + The item to be added or the item removed and returned to the caller. + The number of milliseconds to wait for a collection to accept the + operation, or -1 to wait indefinitely. + Indicates whether this method is called to Add or Take. + A cancellation token to observe. + The index into collections for the collection which accepted the + adding/removal of the item; -1 if the item could not be added/removed. + If the is canceled. + If the collections argument is null. + If the collections argument is a 0-length array or contains a + null element. Also, if atleast one of the collections has been marked complete for adds. + If atleast one of the collections has been disposed. + + + + Local static method, used by TryAddTakeAny to get the wait handles for the collection, with exclude option to exclude the Compeleted collections + + The blocking collections + Add or Take operation + The original CancellationToken + True to exclude the compeleted collections + Complete list of cancellationTokens to observe + The collections wait handles + + + + Helper to perform WaitHandle.WaitAny(.., CancellationToken) + this should eventually appear on the WaitHandle class. + + + + + + + + + + Helper function to measure and update the wait time + + The first time (in Ticks) observed when the wait started + The orginal wait timeoutout in milliseconds + The new wait time in milliseconds, -1 if the time expired + + + + Takes an item from any one of the specified + instances. + + The array of collections. + The item removed from one of the collections. + The index of the collection in the array from which + the item was removed, or -1 if an item could not be removed. + The argument is + null. + The argument is + a 0-length array or contains a null element. + At least one of the instances has been disposed. + At least one of the underlying collections was modified + outside of its instance. + The count of is greater than the maximum size of + 62 for STA and 63 for MTA. + A call to TakeFromAny may block until an item is available to be removed. + + + + Takes an item from any one of the specified + instances. + A is thrown if the is + canceled. + + The array of collections. + The item removed from one of the collections. + A cancellation token to observe. + The index of the collection in the array from which + the item was removed, or -1 if an item could not be removed. + The argument is + null. + If the is canceled. + The argument is + a 0-length array or contains a null element. + At least one of the instances has been disposed. + At least one of the underlying collections was modified + outside of its instance. + The count of is greater than the maximum size of + 62 for STA and 63 for MTA. + A call to TakeFromAny may block until an item is available to be removed. + + + + Attempts to remove an item from any one of the specified + instances. + + The array of collections. + The item removed from one of the collections. + The index of the collection in the array from which + the item was removed, or -1 if an item could not be removed. + The argument is + null. + The argument is + a 0-length array or contains a null element. + At least one of the instances has been disposed. + At least one of the underlying collections was modified + outside of its instance. + The count of is greater than the maximum size of + 62 for STA and 63 for MTA. + A call to TryTakeFromAny may block until an item is available to be removed. + + + + Attempts to remove an item from any one of the specified + instances. + + The array of collections. + The item removed from one of the collections. + A that represents the number of milliseconds + to wait, or a that represents -1 milliseconds to wait indefinitely. + + The index of the collection in the array from which + the item was removed, or -1 if an item could not be removed. + The argument is + null. + The argument is + a 0-length array or contains a null element. + At least one of the instances has been disposed. + is a negative number + other than -1 milliseconds, which represents an infinite time-out -or- timeout is greater than + . + At least one of the underlying collections was modified + outside of its instance. + The count of is greater than the maximum size of + 62 for STA and 63 for MTA. + A call to TryTakeFromAny may block until an item is available to be removed. + + + + Attempts to remove an item from any one of the specified + instances. + + The array of collections. + The item removed from one of the collections. + The number of milliseconds to wait, or (-1) to wait indefinitely. + The index of the collection in the array from which + the item was removed, or -1 if an item could not be removed. + The argument is + null. + The argument is + a 0-length array or contains a null element. + At least one of the instances has been disposed. + is a + negative number other than -1, which represents an infinite time-out. + At least one of the underlying collections was modified + outside of its instance. + The count of is greater than the maximum size of + 62 for STA and 63 for MTA. + A call to TryTakeFromAny may block until an item is available to be removed. + + + + Attempts to remove an item from any one of the specified + instances. + A is thrown if the is + canceled. + + The array of collections. + The item removed from one of the collections. + The number of milliseconds to wait, or (-1) to wait indefinitely. + A cancellation token to observe. + The index of the collection in the array from which + the item was removed, or -1 if an item could not be removed. + If the is canceled. + The argument is + null. + The argument is + a 0-length array or contains a null element. + At least one of the instances has been disposed. + is a + negative number other than -1, which represents an infinite time-out. + At least one of the underlying collections was modified + outside of its instance. + The count of is greater than the maximum size of + 62 for STA and 63 for MTA. + A call to TryTakeFromAny may block until an item is available to be removed. + + + + Marks the instances + as not accepting any more additions. + + + After a collection has been marked as complete for adding, adding to the collection is not permitted + and attempts to remove from the collection will not wait when the collection is empty. + + The has been disposed. + + + Cancels the semaphores. + + + + Releases resources used by the instance. + + + + + Releases resources used by the instance. + + Whether being disposed explicitly (true) or due to a finalizer (false). + + + Copies the items from the instance into a new array. + An array containing copies of the elements of the collection. + The has been disposed. + + The copied elements are not removed from the collection. + + + + Copies all of the items in the instance + to a compatible one-dimensional array, starting at the specified index of the target array. + + The one-dimensional array that is the destination of the elements copied from + the instance. The array must have zero-based indexing. + The zero-based index in at which copying begins. + The argument is + null. + The argument is less than zero. + The argument is equal to or greater + than the length of the . + The has been disposed. + + + Copies all of the items in the instance + to a compatible one-dimensional array, starting at the specified index of the target array. + + The one-dimensional array that is the destination of the elements copied from + the instance. The array must have zero-based indexing. + The zero-based index in at which copying begins. + The argument is + null. + The argument is less than zero. + The argument is equal to or greater + than the length of the , the array is multidimensional, or the type parameter for the collection + cannot be cast automatically to the type of the destination array. + The has been disposed. + + + Provides a consuming for items in the collection. + An that removes and returns items from the collection. + The has been disposed. + + + Provides a consuming for items in the collection. + Calling MoveNext on the returned enumerable will block if there is no data available, or will + throw an if the is canceled. + + A cancellation token to observe. + An that removes and returns items from the collection. + The has been disposed. + If the is canceled. + + + Provides an for items in the collection. + An for the items in the collection. + The has been disposed. + + + Provides an for items in the collection. + An for the items in the collection. + The has been disposed. + + + Centralizes the logic for validating the BlockingCollections array passed to TryAddToAny() + and TryTakeFromAny(). + The collections to/from which an item should be added/removed. + Indicates whether this method is called to Add or Take. + A copy of the collections array that acts as a defense to prevent an “outsider” from changing + elements of the array after we have done the validation on them. + If the collections argument is null. + If the collections argument is a 0-length array or contains a + null element. Also, if atleast one of the collections has been marked complete for adds. + If atleast one of the collections has been disposed. + + + Centeralizes the logic of validating the timeout input argument. + The TimeSpan to wait for to successfully complete an operation on the collection. + If the number of millseconds represented by the timeout + TimeSpan is less than 0 or is larger than Int32.MaxValue and not Timeout.Infinite + + + Centralizes the logic of validating the millisecondsTimeout input argument. + The number of milliseconds to wait for to successfully complete an + operation on the collection. + If the number of millseconds is less than 0 and not + equal to Timeout.Infinite. + + + Throws a System.ObjectDisposedException if the collection was disposed + If the collection has been disposed. + + + Gets the bounded capacity of this instance. + The bounded capacity of this collection, or int.MaxValue if no bound was supplied. + The has been disposed. + + + Gets whether this has been marked as complete for adding. + Whether this collection has been marked as complete for adding. + The has been disposed. + + + Gets whether this has been marked as complete for adding and is empty. + Whether this collection has been marked as complete for adding and is empty. + The has been disposed. + + + Gets the number of items contained in the . + The number of items contained in the . + The has been disposed. + + + Gets a value indicating whether access to the is synchronized. + The has been disposed. + + + + Gets an object that can be used to synchronize access to the . This property is not supported. + + The SyncRoot property is not supported. + + + An enumerated data type used internal to the class to specify to a generic method + the current mode of operation. + + + A debugger view of the blocking collection that makes it simple to browse the + collection's contents at a point in time. + The type of element that the BlockingCollection will hold. + + + Constructs a new debugger view object for the provided blocking collection object. + A blocking collection to browse in the debugger. + + + Returns a snapshot of the underlying collection's elements. + + + + Represents an thread-safe, unordered collection of objects. + + Specifies the type of elements in the bag. + + + Bags are useful for storing objects when ordering doesn't matter, and unlike sets, bags support + duplicates. is a thread-safe bag implementation, optimized for + scenarios where the same thread will be both producing and consuming data stored in the bag. + + + accepts null reference (Nothing in Visual Basic) as a valid + value for reference types. + + + All public and protected members of are thread-safe and may be used + concurrently from multiple threads. + + + + + + Initializes a new instance of the + class. + + + + + Initializes a new instance of the + class that contains elements copied from the specified collection. + + The collection whose elements are copied to the new . + is a null reference + (Nothing in Visual Basic). + + + + Local helper function to initalize a new bag object + + An enumeration containing items with which to initialize this bag. + + + + Adds an object to the . + + The object to be added to the + . The value can be a null reference + (Nothing in Visual Basic) for reference types. + + + + + + + + + + Attempts to add an object to the . + + The object to be added to the + . The value can be a null reference + (Nothing in Visual Basic) for reference types. + Always returns true + + + + Attempts to remove and return an object from the . + + When this method returns, contains the object + removed from the or the default value + of if the operation failed. + true if an object was removed successfully; otherwise, false. + + + + Attempts to return an object from the + without removing it. + + When this method returns, contains an object from + the or the default value of + if the operation failed. + true if and object was returned successfully; otherwise, false. + + + + Local helper function to Take or Peek an item from the bag + + To receive the item retrieved from the bag + True means Take operation, false means Peek operation + True if succeeded, false otherwise + + + + Local helper function to retrieve a thread local list by a thread object + + Create a new list if the thread does ot exist + The local list object + + + + Try to reuse an unowned list if exist + unowned lists are the lists that their owner threads are aborted or terminated + this is workaround to avoid memory leaks. + + The list object, null if all lists are owned + + + + Local helper method to steal an item from any other non empty thread + It enumerate all other threads in two passes first pass acquire the lock with TryEnter if succeeded + it steals the item, otherwise it enumerate them again in 2nd pass and acquire the lock using Enter + + To receive the item retrieved from the bag + Whether to remove or peek. + True if succeeded, false otherwise. + + + + local helper function tries to steal an item from given local list + + + + + Local helper function to check the list if it became empty after acquiring the lock + and wait if there is unsynchronized Add/Take operation in the list to be done + + The list to steal + True if can steal, false otherwise + + + + Copies the elements to an existing + one-dimensional Array, starting at the specified array + index. + + The one-dimensional Array that is the + destination of the elements copied from the + . The Array must have zero-based indexing. + The zero-based index in at which copying + begins. + is a null reference (Nothing in + Visual Basic). + is less than + zero. + is equal to or greater than the + length of the + -or- the number of elements in the source is greater than the available space from + to the end of the destination . + + + + Copies the elements of the to an , starting at a particular + index. + + The one-dimensional Array that is the + destination of the elements copied from the + . The Array must have zero-based indexing. + The zero-based index in at which copying + begins. + is a null reference (Nothing in + Visual Basic). + is less than + zero. + + is multidimensional. -or- + does not have zero-based indexing. -or- + is equal to or greater than the length of the + -or- The number of elements in the source is + greater than the available space from to the end of the destination + . -or- The type of the source cannot be cast automatically to the type of the + destination . + + + + + Copies the elements to a new array. + + A new array containing a snapshot of elements copied from the . + + + + Returns an enumerator that iterates through the . + + An enumerator for the contents of the . + + The enumeration represents a moment-in-time snapshot of the contents + of the bag. It does not reflect any updates to the collection after + was called. The enumerator is safe to use + concurrently with reads from and writes to the bag. + + + + + Returns an enumerator that iterates through the . + + An enumerator for the contents of the . + + The items enumerated represent a moment-in-time snapshot of the contents + of the bag. It does not reflect any update to the collection after + was called. + + + + + Get the data array to be serialized + + + + + Construct the stack from a previously seiralized one + + + + + Local helper method to freeze all bag operations, it + 1- Acquire the global lock to prevent any other thread to freeze the bag, and also new new thread can be added + to the dictionary + 2- Then Acquire all local lists locks to prevent steal and synchronized operations + 3- Wait for all un-synchronized operations to be done + + Retrieve the lock taken result for the global lock, to be passed to Unfreeze method + + + + Local helper method to unfreeze the bag from a frozen state + + The lock taken result from the Freeze method + + + + local helper method to acquire all local lists locks + + + + + Local helper method to release all local lists locks + + + + + Local helper function to wait all unsynchronized operations + + + + + Local helper function to get the bag count, the caller should call it from Freeze/Unfreeze block + + The current bag count + + + + Local helper function to return the bag item in a list, this is mainly used by CopyTo and ToArray + This is not thread safe, should be called in Freeze/UnFreeze bag block + + List the contains the bag items + + + + Gets the number of elements contained in the . + + The number of elements contained in the . + + The count returned represents a moment-in-time snapshot of the contents + of the bag. It does not reflect any updates to the collection after + was called. + + + + + Gets a value that indicates whether the is empty. + + true if the is empty; otherwise, false. + + + + Gets a value indicating whether access to the is + synchronized with the SyncRoot. + + true if access to the is synchronized + with the SyncRoot; otherwise, false. For , this property always + returns false. + + + + Gets an object that can be used to synchronize access to the . This property is not supported. + + The SyncRoot property is not supported. + + + + A class that represents a node in the lock thread list + + + + + A class that represents the lock thread list + + + + + ThreadLocalList constructor + + The owner thread for this list + + + + Add new item to head of the list + + The item to add. + Whether to update the count. + + + + Remove an item from the head of the list + + The removed item + + + + Peek an item from the head of the list + + the peeked item + True if succeeded, false otherwise + + + + Steal an item from the tail of the list + + the removed item + remove or peek flag + + + + Gets the total list count, it's not thread safe, may provide incorrect count if it is called concurrently + + + + + List operations + + + + + A simple class for the debugger view window + + + + + Provides a set of methods for querying objects that implement + ParallelQuery{TSource}. This is the parallel equivalent of + . + + + + + Enables parallelization of a query. + + The type of elements of . + An + to convert to a . + The source as a to bind to + ParallelEnumerable extension methods. + + is a null reference (Nothing in Visual Basic). + + + + + Enables parallelization of a query, as sourced by a partitioner + responsible for splitting the input sequence into partitions. + + The type of elements of . + A partitioner over the input sequence. + The as a ParallelQuery to bind to ParallelEnumerable extension methods. + + The source partitioner's GetOrderedPartitions method is used when ordering is enabled, + whereas the partitioner's GetPartitions is used if ordering is not enabled (the default). + The source partitioner's GetDynamicPartitions and GetDynamicOrderedPartitions are not used. + + + is a null reference (Nothing in Visual Basic). + + + + + Enables treatment of a data source as if it was ordered, overriding the default of unordered. + AsOrdered may only be invoked on sequences returned by AsParallel, ParallelEnumerable.Range, + and ParallelEnumerable.Repeat. + + The type of elements of . + The input sequence. + + Thrown if is not one of AsParallel, ParallelEnumerable.Range, or ParallelEnumerable.Repeat. + + + is a null reference (Nothing in Visual Basic). + + + A natural tension exists between performance and preserving order in parallel processing. By default, + a parallelized query behaves as if the ordering of the results is arbitrary + unless AsOrdered is applied or there is an explicit OrderBy operator in the query. + + The source sequence which will maintain ordering in the query. + + + + Enables treatment of a data source as if it was ordered, overriding the default of unordered. + AsOrdered may only be invoked on sequences returned by AsParallel, ParallelEnumerable.Range, + and ParallelEnumerable.Repeat. + + The input sequence. + + Thrown if the is not one of AsParallel, ParallelEnumerable.Range, or ParallelEnumerable.Repeat. + + + is a null reference (Nothing in Visual Basic). + + + A natural tension exists between performance and preserving order in parallel processing. By default, + a parallelized query behaves as if the ordering of the results is arbitrary unless AsOrdered + is applied or there is an explicit OrderBy operator in the query. + + The source sequence which will maintain ordering in the query. + + + + Allows an intermediate query to be treated as if no ordering is implied among the elements. + + + AsUnordered may provide + performance benefits when ordering is not required in a portion of a query. + + The type of elements of . + The input sequence. + The source sequence with arbitrary order. + + is a null reference (Nothing in Visual Basic). + + + + + Enables parallelization of a query. + + An to convert + to a . + + The source as a ParallelQuery to bind to + ParallelEnumerable extension methods. + + + is a null reference (Nothing in Visual Basic). + + + + + Converts a into an + to force sequential + evaluation of the query. + + The type of elements of . + A to convert to an . + The source as an + to bind to sequential extension methods. + + is a null reference (Nothing in Visual Basic). + + + + + Sets the task scheduler to execute the query. + + The type of elements of . + A ParallelQuery on which to set the task scheduler option. + Task scheduler to execute the query. + ParallelQuery representing the same query as source, but with the task scheduler option set. + + or is a null reference (Nothing in Visual Basic). + + + WithTaskScheduler is used multiple times in the query. + + + + + Sets the degree of parallelism to use in a query. Degree of parallelism is the maximum number of concurrently + executing tasks that will be used to process the query. + + The type of elements of . + A ParallelQuery on which to set the limit on the degrees of parallelism. + The degree of parallelism for the query. + ParallelQuery representing the same query as source, with the limit on the degrees of parallelism set. + + is a null reference (Nothing in Visual Basic). + + + WithDegreeOfParallelism is used multiple times in the query. + + + is less than 1 or greater than 63. + + + + + Sets the to associate with the query. + + The type of elements of . + A ParallelQuery on which to set the option. + A cancellation token. + ParallelQuery representing the same query as source, but with the + registered. + + is a null reference (Nothing in Visual Basic). + + + WithCancellation is used multiple times in the query. + + + The associated with the has been disposed. + + + + + Sets the execution mode of the query. + + The type of elements of . + A ParallelQuery on which to set the option. + The mode in which to execute the query. + ParallelQuery representing the same query as source, but with the + registered. + + is a null reference (Nothing in Visual Basic). + + + is not a valid value. + + + WithExecutionMode is used multiple times in the query. + + + + + Sets the merge options for this query, which specify how the query will buffer output. + + The type of elements of . + A ParallelQuery on which to set the option. + The merge optiosn to set for this query. + ParallelQuery representing the same query as source, but with the + registered. + + is a null reference (Nothing in Visual Basic). + + + is not a valid value. + + + WithMergeOptions is used multiple times in the query. + + + + + Generates a parallel sequence of integral numbers within a specified range. + + The value of the first integer in the sequence. + The number of sequential integers to generate. + An IEnumerable<Int32> in C# or IEnumerable(Of Int32) in + Visual Basic that contains a range of sequential integral numbers. + + is less than 0 + -or- + + - 1 is larger than . + + + + + Generates a parallel sequence that contains one repeated value. + + The type of the value to be repeated in the result sequence. + The value to be repeated. + The number of times to repeat the value in the generated sequence. + A sequence that contains a repeated value. + + is less than 0. + + + + + Returns an empty ParallelQuery{TResult} that has the specified type argument. + + The type to assign to the type parameter of the returned + generic sequence. + An empty sequence whose type argument is . + + + + Invokes in parallel the specified action for each element in the . + + + This is an efficient way to process the output from a parallelized query because it does + not require a merge step at the end. However, order of execution is non-deterministic. + + The type of elements of . + The whose elements will be processed by + . + An Action to invoke on each element. + + or is a null reference (Nothing in Visual Basic). + + + One or more exceptions occurred during the evaluation of the query. + + + The query was canceled. + + + + + Filters in parallel a sequence of values based on a predicate. + + The type of the elements of source. + A sequence to filter. + A function to test each element for a condition. + A sequence that contains elements from the input sequence that satisfy + the condition. + + or is a null reference (Nothing in Visual Basic). + + + + + Filters in parallel a sequence of values based on a predicate. Each element's index is used in the logic of the predicate function. + + The type of the elements of source. + A sequence to filter. + A function to test each element for a condition. + A sequence that contains elements from the input sequence that satisfy the condition. + + or is a null reference (Nothing in Visual Basic). + + + + + Projects in parallel each element of a sequence into a new form. + + The type of the elements of . + The type of elements resturned by selector. + A sequence of values to invoke a transform function on. + A transform function to apply to each element. + A sequence whose elements are the result of invoking the transform function on each + element of . + + or is a null reference (Nothing in Visual Basic). + + + + + Projects in parallel each element of a sequence into a new form by incorporating the element's index. + + The type of the elements of . + The type of elements resturned by selector. + A sequence of values to invoke a transform function on. + A transform function to apply to each element. + A sequence whose elements are the result of invoking the transform function on each + element of . + + or is a null reference (Nothing in Visual Basic). + + + + + Merges in parallel two sequences by using the specified predicate function. + + The type of the elements of the first sequence. + The type of the elements of the second sequence. + The type of the return elements. + The first sequence to zip. + The second sequence to zip. + A function to create a result element from two matching elements. + + A sequence that has elements of type that are obtained by performing + resultSelector pairwise on two sequences. If the sequence lengths are unequal, this truncates + to the length of the shorter sequence. + + + or or is a null reference (Nothing in Visual Basic). + + + + + This Zip overload should never be called. + This method is marked as obsolete and always throws + when invoked. + + This type parameter is not used. + This type parameter is not used. + This type parameter is not used. + This parameter is not used. + This parameter is not used. + This parameter is not used. + This overload always throws a . + The exception that occurs when this method is called. + + This overload exists to disallow usage of Zip with a left data source of type + and a right data source of type . + Otherwise, the Zip operator would appear to be bind to the parallel implementation, but would in reality bind to the sequential implementation. + + + + + Correlates in parallel the elements of two sequences based on matching keys. + The default equality comparer is used to compare keys. + + The type of the elements of the first sequence. + The type of the elements of the second sequence. + The type of the keys returned by the key selector functions. + The type of the result elements. + The first sequence to join. + The sequence to join to the first sequence. + A function to extract the join key from each element of + the first sequence. + A function to extract the join key from each element of + the second sequence. + A function to create a result element from two matching elements. + A sequence that has elements of type that are obtained by performing + an inner join on two sequences. + + or or or + or is a null reference (Nothing in Visual Basic). + + + + + This Join overload should never be called. + This method is marked as obsolete and always throws when invoked. + + This type parameter is not used. + This type parameter is not used. + This type parameter is not used. + This type parameter is not used. + This parameter is not used. + This parameter is not used. + This parameter is not used. + This parameter is not used. + This parameter is not used. + This overload always throws a . + The exception that occurs when this method is called. + + This overload exists to disallow usage Join with a left data source of type + and a right data source of type . + Otherwise, the Join operator would appear to be binding to the parallel implementation, but would in reality bind to the sequential implementation. + + + + + Correlates in parallel the elements of two sequences based on matching keys. + A specified IEqualityComparer{T} is used to compare keys. + + The type of the elements of the first sequence. + The type of the elements of the second sequence. + The type of the keys returned by the key selector functions. + The type of the result elements. + The first sequence to join. + The sequence to join to the first sequence. + A function to extract the join key from each element + of the first sequence. + A function to extract the join key from each element + of the second sequence. + A function to create a result element from two matching elements. + An IEqualityComparer<(Of <(T>)>) to hash and compare keys. + A sequence that has elements of type that are obtained by performing + an inner join on two sequences. + + or or or + or is a null reference (Nothing in Visual Basic). + + + + + This Join overload should never be called. + This method is marked as obsolete and always throws when invoked. + + This type parameter is not used. + This type parameter is not used. + This type parameter is not used. + This type parameter is not used. + This parameter is not used. + This parameter is not used. + This parameter is not used. + This parameter is not used. + This parameter is not used. + This parameter is not used. + This overload always throws a . + The exception that occurs when this method is called. + + This overload exists to disallow usage of Join with a left data source of type + and a right data source of type . + Otherwise, the Join operator would appear to be binding to the parallel implementation, but would in reality bind to the sequential implementation. + + + + + Correlates in parallel the elements of two sequences based on equality of keys and groups the results. + The default equality comparer is used to compare keys. + + The type of the elements of the first sequence. + The type of the elements of the second sequence. + The type of the keys returned by the key selector functions. + The type of the result elements. + The first sequence to join. + The sequence to join to the first sequence. + A function to extract the join key from each element + of the first sequence. + A function to extract the join key from each element + of the second sequence. + A function to create a result element from an element from + the first sequence and a collection of matching elements from the second sequence. + A sequence that has elements of type that are obtained by performing + a grouped join on two sequences. + + or or or + or is a null reference (Nothing in Visual Basic). + + + + + This GroupJoin overload should never be called. + This method is marked as obsolete and always throws when called. + + This type parameter is not used. + This type parameter is not used. + This type parameter is not used. + This type parameter is not used. + This parameter is not used. + This parameter is not used. + This parameter is not used. + This parameter is not used. + This parameter is not used. + This overload always throws a . + The exception that occurs when this method is called. + + This overload exists to disallow usage of GroupJoin with a left data source of type + and a right data source of type . + Otherwise, the GroupJoin operator would appear to be binding to the parallel implementation, + but would in reality bind to the sequential implementation. + + + + + Correlates in parallel the elements of two sequences based on key equality and groups the results. + A specified IEqualityComparer{T} is used to compare keys. + + The type of the elements of the first sequence. + The type of the elements of the second sequence. + The type of the keys returned by the key selector functions. + The type of the result elements. + The first sequence to join. + The sequence to join to the first sequence. + A function to extract the join key from each element + of the first sequence. + A function to extract the join key from each element + of the second sequence. + A function to create a result element from an element from + the first sequence and a collection of matching elements from the second sequence. + An IEqualityComparer<(Of <(T>)>) to hash and compare keys. + A sequence that has elements of type that are obtained by performing + a grouped join on two sequences. + + or or or + or is a null reference (Nothing in Visual Basic). + + + + + This GroupJoin overload should never be called. + This method is marked as obsolete and always throws when called. + + This type parameter is not used. + This type parameter is not used. + This type parameter is not used. + This type parameter is not used. + This parameter is not used. + This parameter is not used. + This parameter is not used. + This parameter is not used. + This parameter is not used. + This parameter is not used. + This overload always throws a . + The exception that occurs when this method is called. + + This overload exists to disallow usage of GroupJoin with a left data source of type + and a right data source of type . + Otherwise, the GroupJoin operator would appear to be binding to the parallel implementation, + but would in reality bind to the sequential implementation. + + + + + Projects in parallel each element of a sequence to an IEnumerable{T} + and flattens the resulting sequences into one sequence. + + The type of elements of . + The type of the elements of the sequence returned by selector. + A sequence of values to project. + A transform function to apply to each element. + A sequence whose elements are the result of invoking the one-to-many transform + function on each element of the input sequence. + + or is a null reference (Nothing in Visual Basic). + + + + + Projects in parallel each element of a sequence to an IEnumerable{T}, and flattens the resulting + sequences into one sequence. The index of each source element is used in the projected form of + that element. + + The type of elements of . + The type of the elements of the sequence returned by selector. + A sequence of values to project. + A transform function to apply to each element. + A sequence whose elements are the result of invoking the one-to-many transform + function on each element of the input sequence. + + or is a null reference (Nothing in Visual Basic). + + + + + Projects each element of a sequence to an IEnumerable{T}, + flattens the resulting sequences into one sequence, and invokes a result selector + function on each element therein. + + The type of elements of . + The type of the intermediate elements collected by . + + A sequence of values to project. + A transform function to apply to each source element; + the second parameter of the function represents the index of the source element. + A function to create a result element from an element from + the first sequence and a collection of matching elements from the second sequence. + A sequence whose elements are the result of invoking the one-to-many transform + function on each element of and then mapping + each of those sequence elements and their corresponding source element to a result element. + + or or + is a null reference (Nothing in Visual Basic). + + + + + Projects each element of a sequence to an IEnumerable{T}, flattens the resulting + sequences into one sequence, and invokes a result selector function on each element + therein. The index of each source element is used in the intermediate projected + form of that element. + + The type of elements of . + The type of the intermediate elements collected by + . + The type of elements to return. + A sequence of values to project. + A transform function to apply to each source element; + the second parameter of the function represents the index of the source element. + A function to create a result element from an element from + the first sequence and a collection of matching elements from the second sequence. + + A sequence whose elements are the result of invoking the one-to-many transform + function on each element of and then mapping + each of those sequence elements and their corresponding source element to a + result element. + + + or or + is a null reference (Nothing in Visual Basic). + + + + + Sorts in parallel the elements of a sequence in ascending order according to a key. + + + In contrast to the sequential implementation, this is not a stable sort. + To achieve a stable sort, change a query of the form: + var ordered = source.OrderBy((e) => e.k); + to instead be formed as: + var ordered = source.Select((e,i) => new { E=e, I=i }).OrderBy((v) => v.i).Select((v) => v.e); + + The type of elements of . + The type of the key returned by . + A sequence of values to order. + A function to extract a key from an element. + An OrderedParallelQuery{TSource} whose elements are sorted + according to a key. + + or is a null reference (Nothing in Visual Basic). + + + + + Sorts in parallel the elements of a sequence in ascending order by using a specified comparer. + + + In contrast to the sequential implementation, this is not a stable sort. + See the remarks for OrderBy(ParallelQuery{TSource}, Func{TSource,TKey}) for + an approach to implementing a stable sort. + + The type of elements of . + The type of the key returned by . + A sequence of values to order. + A function to extract a key from an element. + An IComparer{TKey} to compare keys. + An OrderedParallelQuery{TSource} whose elements are sorted according + to a key. + + or is a null reference (Nothing in Visual Basic). + + + + + Sorts in parallel the elements of a sequence in descending order according to a key. + + + In contrast to the sequential implementation, this is not a stable sort. + See the remarks for OrderBy(ParallelQuery{TSource}, Func{TSource,TKey}) for + an approach to implementing a stable sort. + + The type of elements of . + The type of the key returned by . + A sequence of values to order. + A function to extract a key from an element. + An OrderedParallelQuery{TSource} whose elements are sorted + descending according to a key. + + or is a null reference (Nothing in Visual Basic). + + + + + Sorts the elements of a sequence in descending order by using a specified comparer. + + + In contrast to the sequential implementation, this is not a stable sort. + See the remarks for OrderBy(ParallelQuery{TSource}, Func{TSource,TKey}) for + an approach to implementing a stable sort. + + The type of elements of . + The type of the key returned by . + A sequence of values to order. + A function to extract a key from an element. + An IComparer{TKey} to compare keys. + An OrderedParallelQuery{TSource} whose elements are sorted descending + according to a key. + + or is a null reference (Nothing in Visual Basic). + + + + + Performs in parallel a subsequent ordering of the elements in a sequence + in ascending order according to a key. + + + In contrast to the sequential implementation, this is not a stable sort. + See the remarks for OrderBy(ParallelQuery{TSource}, Func{TSource,TKey}) for + an approach to implementing a stable sort. + + The type of elements of . + The type of the key returned by . + An OrderedParallelQuery{TSource} than + contains elements to sort. + A function to extract a key from an element. + An OrderedParallelQuery{TSource} whose elements are + sorted according to a key. + + or is a null reference (Nothing in Visual Basic). + + + + + Performs in parallel a subsequent ordering of the elements in a sequence in + ascending order by using a specified comparer. + + + In contrast to the sequential implementation, this is not a stable sort. + See the remarks for OrderBy(ParallelQuery{TSource}, Func{TSource,TKey}) for + an approach to implementing a stable sort. + + The type of elements of . + The type of the key returned by . + An OrderedParallelQuery{TSource} that contains + elements to sort. + A function to extract a key from an element. + An IComparer{TKey} to compare keys. + An OrderedParallelQuery{TSource} whose elements are sorted + according to a key. + + or is a null reference (Nothing in Visual Basic). + + + + + Performs in parallel a subsequent ordering of the elements in a sequence in + descending order, according to a key. + + + In contrast to the sequential implementation, this is not a stable sort. + See the remarks for OrderBy(ParallelQuery{TSource}, Func{TSource,TKey}) for + an approach to implementing a stable sort. + + The type of elements of . + The type of the key returned by . + An OrderedParallelQuery{TSource} than contains + elements to sort. + A function to extract a key from an element. + An OrderedParallelQuery{TSource} whose elements are sorted + descending according to a key. + + or is a null reference (Nothing in Visual Basic). + + + + + Performs in parallel a subsequent ordering of the elements in a sequence in descending + order by using a specified comparer. + + + In contrast to the sequential implementation, this is not a stable sort. + See the remarks for OrderBy(ParallelQuery{TSource}, Func{TSource,TKey}) for + an approach to implementing a stable sort. + + The type of elements of . + The type of the key returned by . + An OrderedParallelQuery{TSource} than contains + elements to sort. + A function to extract a key from an element. + An IComparer{TKey} to compare keys. + An OrderedParallelQuery{TSource} whose elements are sorted + descending according to a key. + + or is a null reference (Nothing in Visual Basic). + + + + + Groups in parallel the elements of a sequence according to a specified key selector function. + + The type of elements of . + The type of the key returned by . + An OrderedParallelQuery{TSource}than contains + elements to sort. + A function to extract a key from an element. + An OrderedParallelQuery{TSource}whose elements are sorted + descending according to a key. + + + + Groups in parallel the elements of a sequence according to a specified key selector function and compares the keys by using a specified comparer. + + The type of elements of . + The type of the key returned by >. + An OrderedParallelQuery{TSource} than contains + elements to sort. + A function to extract a key from an element. + An IComparer{TSource} to compare keys. + An OrderedParallelQuery{TSource} whose elements are sorted + descending according to a key. + + or is a null reference (Nothing in Visual Basic). + + + + + Groups in parallel the elements of a sequence according to a specified key selector function and + projects the elements for each group by using a specified function. + + The type of elements of . + The type of the key returned by . + The type of the elements in the IGrouping + An OrderedParallelQuery<(Of <(TElement>)>) than contains + elements to sort. + A function to extract a key from an element. + A function to map each source element to an element in an IGrouping. + A ParallelQuery<IGrouping<TKey, TElement>> in C# or + ParallelQuery(Of IGrouping(Of TKey, TElement)) in Visual Basic where each IGrouping + generic object contains a collection of objects of type and a key. + + or or + is a null reference (Nothing in Visual Basic). + + + + + Groups in parallel the elements of a sequence according to a key selector function. + The keys are compared by using a comparer and each group's elements are projected by + using a specified function. + + The type of elements of . + The type of the key returned by . + The type of the elements in the IGrouping + An OrderedParallelQuery{TSource}than contains elements to sort. + A function to extract a key from an element. + A function to map each source element to an element in an IGrouping. + An IComparer{TSource} to compare keys. + + A ParallelQuery{IGrouping{TKey, TElement}} in C# or + ParallelQuery(Of IGrouping(Of TKey, TElement)) in Visual Basic where each IGrouping + generic object contains a collection of objects of type and a key. + + + or or + is a null reference (Nothing in Visual Basic). + + + + + Groups in parallel the elements of a sequence according to a specified + key selector function and creates a result value from each group and its key. + + The type of the elements of . + The type of the key returned by . + The type of the result value returned by . + A sequence whose elements to group. + A function to extract the key for each element. + A function to create a result value from each group. + A collection of elements of type where each element represents a + projection over a group and its key. + + or or + is a null reference (Nothing in Visual Basic). + + + + + Groups in parallel the elements of a sequence according to a specified key selector function + and creates a result value from each group and its key. The keys are compared + by using a specified comparer. + + The type of the elements of . + The type of the key returned by . + The type of the result value returned by . + A sequence whose elements to group. + A function to extract the key for each element. + A function to create a result value from each group. + An IEqualityComparer{TKey} to compare keys. + + An ParallelQuery<IGrouping<TKey, TResult>> in C# or + ParallelQuery(Of IGrouping(Of TKey, TResult)) in Visual Basic where each + IGrouping<(Of <(TKey, TResult>)>) object contains a collection of objects + of type and a key. + + + or or + is a null reference (Nothing in Visual Basic). + + + + + Groups in parallel the elements of a sequence according to a specified key + selector function and creates a result value from each group and its key. + The elements of each group are projected by using a specified function. + + The type of the elements of . + The type of the key returned by . + The type of the elements in each + IGrouping{TKey, TElement}. + The type of the result value returned by . + A sequence whose elements to group. + A function to extract the key for each element. + A function to map each source element to an element in an + IGrouping<TKey, TElement>. + A function to create a result value from each group. + A collection of elements of type where each element represents a + projection over a group and its key. + + or or + or is a null reference (Nothing in Visual Basic). + + + + + Groups the elements of a sequence according to a specified key selector function and + creates a result value from each group and its key. Key values are compared by using a + specified comparer, and the elements of each group are projected by using a specified function. + + The type of the elements of . + The type of the key returned by . + The type of the elements in each + IGrouping{TKey, TElement}. + The type of the result value returned by . + A sequence whose elements to group. + A function to extract the key for each element. + A function to map each source element to an element in an + IGrouping{Key, TElement}. + A function to create a result value from each group. + An IEqualityComparer{TKey} to compare keys. + A collection of elements of type where each element represents a + projection over a group and its key. + + or or + or is a null reference (Nothing in Visual Basic). + + + + + Run an aggregation sequentially. If the user-provided reduction function throws an exception, wrap + it with an AggregateException. + + + + + if true, use the seed provided in the method argument + if false, use the first element of the sequence as the seed instead + + + + + + Applies in parallel an accumulator function over a sequence. + + The type of the elements of . + A sequence to aggregate over. + An accumulator function to be invoked on each element. + The final accumulator value. + + or is a null reference (Nothing in Visual Basic). + + + contains no elements. + + + One or more exceptions occurred during the evaluation of the query. + + + The query was canceled. + + + + + Applies in parallel an accumulator function over a sequence. + The specified seed value is used as the initial accumulator value. + + The type of the elements of . + The type of the accumulator value. + A sequence to aggregate over. + The initial accumulator value. + An accumulator function to be invoked on each element. + The final accumulator value. + + or is a null reference (Nothing in Visual Basic). + + + One or more exceptions occurred during the evaluation of the query. + + + The query was canceled. + + + + + Applies in parallel an accumulator function over a sequence. The specified + seed value is used as the initial accumulator value, and the specified + function is used to select the result value. + + The type of the elements of . + The type of the accumulator value. + The type of the resulting value. + A sequence to aggregate over. + The initial accumulator value. + An accumulator function to be invoked on each element. + A function to transform the final accumulator value + into the result value. + The transformed final accumulator value. + + or or is a null reference (Nothing in Visual Basic). + + + One or more exceptions occurred during the evaluation of the query. + + + The query was canceled. + + + + + Applies in parallel an accumulator function over a sequence. This overload is not + available in the sequential implementation. + + + This overload is specific to processing a parallelized query. A parallelized query may + partition the data source sequence into several sub-sequences (partitions). + The is invoked on each element within partitions. + Each partition then yields a single accumulated result. The + is then invoked on the results of each partition to yield a single element. This element is then + transformed by the function. + + The type of the elements of . + The type of the accumulator value. + The type of the resulting value. + A sequence to aggregate over. + The initial accumulator value. + + An accumulator function to be invoked on each element in a partition. + + + An accumulator function to be invoked on the yielded element from each partition. + + + A function to transform the final accumulator value into the result value. + + The transformed final accumulator value. + + or + or or is a null reference (Nothing in Visual Basic). + + + One or more exceptions occurred during the evaluation of the query. + + + The query was canceled. + + + + + Applies in parallel an accumulator function over a sequence. This overload is not + available in the sequential implementation. + + + This overload is specific to parallelized queries. A parallelized query may partition the data source sequence + into several sub-sequences (partitions). The is invoked + on each element within partitions. Each partition then yields a single accumulated result. + The + is then invoked on the results of each partition to yield a single element. This element is then + transformed by the function. + + The type of the elements of . + The type of the accumulator value. + The type of the resulting value. + A sequence to aggregate over. + + A function that returns the initial accumulator value. + + + An accumulator function to be invoked on each element in a partition. + + + An accumulator function to be invoked on the yielded element from each partition. + + + A function to transform the final accumulator value into the result value. + + The transformed final accumulator value. + + or or + or or is a null reference (Nothing in Visual Basic). + + + One or more exceptions occurred during the evaluation of the query. + + + The query was canceled. + + + + + Returns the number of elements in a parallel sequence. + + The type of the elements of . + A sequence that contains elements to be counted. + The number of elements in the input sequence. + + is a null reference (Nothing in Visual Basic). + + + The number of elements in source is larger than . + -or- + One or more exceptions occurred during the evaluation of the query. + + + The query was canceled. + + + + + Returns a number that represents how many elements in the specified + parallel sequence satisfy a condition. + + The type of the elements of . + A sequence that contains elements to be counted. + A function to test each element for a condition. + + A number that represents how many elements in the sequence satisfy the condition + in the predicate function. + + + or is a null reference (Nothing in Visual Basic). + + + The number of elements in source is larger than . + -or- + One or more exceptions occurred during the evaluation of the query. + + + The query was canceled. + + + + + Returns an Int64 that represents the total number of elements in a parallel sequence. + + The type of the elements of . + A sequence that contains elements to be counted. + The number of elements in the input sequence. + + is a null reference (Nothing in Visual Basic). + + + The number of elements in source is larger than . + -or- + One or more exceptions occurred during the evaluation of the query. + + + The query was canceled. + + + + + Returns an Int64 that represents how many elements in a parallel sequence satisfy a condition. + + The type of the elements of . + A sequence that contains elements to be counted. + A function to test each element for a condition. + + A number that represents how many elements in the sequence satisfy the condition + in the predicate function. + + + or is a null reference (Nothing in Visual Basic). + + + The number of elements in source is larger than . + -or- + One or more exceptions occurred during the evaluation of the query. + + + The query was canceled. + + + + + Computes in parallel the sum of a sequence of values. + + A sequence of values to calculate the sum of. + The sum of the values in the sequence. + + is a null reference (Nothing in Visual Basic). + + + The sum is larger than . + -or- + One or more exceptions occurred during the evaluation of the query. + + + The query was canceled. + + + + + Computes in parallel the sum of a sequence of values. + + A sequence of values to calculate the sum of. + The sum of the values in the sequence. + + is a null reference (Nothing in Visual Basic). + + + The sum is larger than . + -or- + One or more exceptions occurred during the evaluation of the query. + + + The query was canceled. + + + + + Computes in parallel the sum of a sequence of values. + + A sequence of values to calculate the sum of. + The sum of the values in the sequence. + + is a null reference (Nothing in Visual Basic). + + + The sum is larger than . + -or- + One or more exceptions occurred during the evaluation of the query. + + + The query was canceled. + + + + + Computes in parallel the sum of a sequence of values. + + A sequence of values to calculate the sum of. + The sum of the values in the sequence. + + is a null reference (Nothing in Visual Basic). + + + The sum is larger than . + -or- + One or more exceptions occurred during the evaluation of the query. + + + The query was canceled. + + + + + Computes in parallel the sum of a sequence of values. + + A sequence of values to calculate the sum of. + The sum of the values in the sequence. + + is a null reference (Nothing in Visual Basic). + + + One or more exceptions occurred during the evaluation of the query. + + + The query was canceled. + + + + + Computes in parallel the sum of a sequence of values. + + A sequence of values to calculate the sum of. + The sum of the values in the sequence. + + is a null reference (Nothing in Visual Basic). + + + One or more exceptions occurred during the evaluation of the query. + + + The query was canceled. + + + + + Computes in parallel the sum of a sequence of values. + + A sequence of values to calculate the sum of. + The sum of the values in the sequence. + + is a null reference (Nothing in Visual Basic). + + + One or more exceptions occurred during the evaluation of the query. + + + The query was canceled. + + + + + Computes in parallel the sum of a sequence of values. + + A sequence of values to calculate the sum of. + The sum of the values in the sequence. + + is a null reference (Nothing in Visual Basic). + + + One or more exceptions occurred during the evaluation of the query. + + + The query was canceled. + + + + + Computes in parallel the sum of a sequence of values. + + A sequence of values to calculate the sum of. + The sum of the values in the sequence. + + is a null reference (Nothing in Visual Basic). + + + The sum is larger than . + -or- + One or more exceptions occurred during the evaluation of the query. + + + The query was canceled. + + + + + Computes in parallel the sum of a sequence of values. + + A sequence of values to calculate the sum of. + The sum of the values in the sequence. + + is a null reference (Nothing in Visual Basic). + + + The sum is larger than . + -or- + One or more exceptions occurred during the evaluation of the query. + + + The query was canceled. + + + + + Computes in parallel the sum of the sequence of values that are obtained + by invoking a transform function on each element of the input sequence. + + A sequence of values to calculate the sum of. + A transform function to apply to each element. + The sum of the values in the sequence. + + or is a null reference (Nothing in Visual Basic). + + + The sum is larger than . + -or- + One or more exceptions occurred during the evaluation of the query. + + + The query was canceled. + + + + + Computes in parallel the sum of the sequence of values that are obtained + by invoking a transform function on each element of the input sequence. + + The type of elements of . + A sequence of values to calculate the sum of. + A transform function to apply to each element. + The sum of the values in the sequence. + + or is a null reference (Nothing in Visual Basic). + + + The sum is larger than . + -or- + One or more exceptions occurred during the evaluation of the query. + + + The query was canceled. + + + + + Computes in parallel the sum of the sequence of values that are obtained + by invoking a transform function on each element of the input sequence. + + The type of elements of . + A sequence of values to calculate the sum of. + A transform function to apply to each element. + The sum of the values in the sequence. + + or is a null reference (Nothing in Visual Basic). + + + The sum is larger than . + -or- + One or more exceptions occurred during the evaluation of the query. + + + The query was canceled. + + + + + Computes in parallel the sum of the sequence of values that are obtained + by invoking a transform function on each element of the input sequence. + + The type of elements of . + A sequence of values to calculate the sum of. + A transform function to apply to each element. + The sum of the values in the sequence. + + or is a null reference (Nothing in Visual Basic). + + + The sum is larger than . + -or- + One or more exceptions occurred during the evaluation of the query. + + + The query was canceled. + + + + + Computes in parallel the sum of the sequence of values that are obtained + by invoking a transform function on each element of the input sequence. + + The type of elements of . + A sequence of values to calculate the sum of. + A transform function to apply to each element. + The sum of the values in the sequence. + + or is a null reference (Nothing in Visual Basic). + + + One or more exceptions occurred during the evaluation of the query. + + + The query was canceled. + + + + + Computes in parallel the sum of the sequence of values that are obtained + by invoking a transform function on each element of the input sequence. + + The type of elements of . + A sequence of values to calculate the sum of. + A transform function to apply to each element. + The sum of the values in the sequence. + + or is a null reference (Nothing in Visual Basic). + + + One or more exceptions occurred during the evaluation of the query. + + + The query was canceled. + + + + + Computes in parallel the sum of the sequence of values that are obtained + by invoking a transform function on each element of the input sequence. + + The type of elements of . + A sequence of values to calculate the sum of. + A transform function to apply to each element. + The sum of the values in the sequence. + + or is a null reference (Nothing in Visual Basic). + + + One or more exceptions occurred during the evaluation of the query. + + + The query was canceled. + + + + + Computes in parallel the sum of the sequence of values that are obtained + by invoking a transform function on each element of the input sequence. + + The type of elements of . + A sequence of values to calculate the sum of. + A transform function to apply to each element. + The sum of the values in the sequence. + + or is a null reference (Nothing in Visual Basic). + + + One or more exceptions occurred during the evaluation of the query. + + + The query was canceled. + + + + + Computes in parallel the sum of the sequence of values that are obtained + by invoking a transform function on each element of the input sequence. + + The type of elements of . + A sequence of values to calculate the sum of. + A transform function to apply to each element. + The sum of the values in the sequence. + + or is a null reference (Nothing in Visual Basic). + + + The sum is larger than . + -or- + One or more exceptions occurred during the evaluation of the query. + + + The query was canceled. + + + + + Computes in parallel the sum of the sequence of values that are obtained + by invoking a transform function on each element of the input sequence. + + The type of elements of . + A sequence of values to calculate the sum of. + A transform function to apply to each element. + The sum of the values in the sequence. + + or is a null reference (Nothing in Visual Basic). + + + The sum is larger than . + -or- + One or more exceptions occurred during the evaluation of the query. + + + The query was canceled. + + + + + Returns the minimum value in a parallel sequence of values. + + A sequence of values to determine the minimum value of. + The minimum value in the sequence. + + is a null reference (Nothing in Visual Basic). + + + contains no elements. + + + One or more exceptions occurred during the evaluation of the query. + + + The query was canceled. + + + + + Returns the minimum value in a parallel sequence of values. + + A sequence of values to determine the minimum value of. + The minimum value in the sequence. + + is a null reference (Nothing in Visual Basic). + + + One or more exceptions occurred during the evaluation of the query. + + + The query was canceled. + + + + + Returns the minimum value in a parallel sequence of values. + + A sequence of values to determine the minimum value of. + The minimum value in the sequence. + + is a null reference (Nothing in Visual Basic). + + + contains no elements. + + + One or more exceptions occurred during the evaluation of the query. + + + The query was canceled. + + + + + Returns the minimum value in a parallel sequence of values. + + A sequence of values to determine the minimum value of. + The minimum value in the sequence. + + is a null reference (Nothing in Visual Basic). + + + One or more exceptions occurred during the evaluation of the query. + + + The query was canceled. + + + + + Returns the minimum value in a parallel sequence of values. + + A sequence of values to determine the minimum value of. + The minimum value in the sequence. + + is a null reference (Nothing in Visual Basic). + + + contains no elements. + + + One or more exceptions occurred during the evaluation of the query. + + + The query was canceled. + + + + + Returns the minimum value in a parallel sequence of values. + + A sequence of values to determine the minimum value of. + The minimum value in the sequence. + + is a null reference (Nothing in Visual Basic). + + + One or more exceptions occurred during the evaluation of the query. + + + The query was canceled. + + + + + Returns the minimum value in a parallel sequence of values. + + A sequence of values to determine the minimum value of. + The minimum value in the sequence. + + is a null reference (Nothing in Visual Basic). + + + contains no elements. + + + One or more exceptions occurred during the evaluation of the query. + + + The query was canceled. + + + + + Returns the minimum value in a parallel sequence of values. + + A sequence of values to determine the minimum value of. + The minimum value in the sequence. + + is a null reference (Nothing in Visual Basic). + + + One or more exceptions occurred during the evaluation of the query. + + + The query was canceled. + + + + + Returns the minimum value in a parallel sequence of values. + + A sequence of values to determine the minimum value of. + The minimum value in the sequence. + + is a null reference (Nothing in Visual Basic). + + + contains no elements. + + + One or more exceptions occurred during the evaluation of the query. + + + The query was canceled. + + + + + Returns the minimum value in a parallel sequence of values. + + A sequence of values to determine the minimum value of. + The minimum value in the sequence. + + is a null reference (Nothing in Visual Basic). + + + One or more exceptions occurred during the evaluation of the query. + + + The query was canceled. + + + + + Returns the minimum value in a parallel sequence of values. + + The type of elements of . + A sequence of values to determine the minimum value of. + The minimum value in the sequence. + + is a null reference (Nothing in Visual Basic). + + + contains no elements and is a non-nullable value type. + + + One or more exceptions occurred during the evaluation of the query. + + + The query was canceled. + + + + + Invokes in parallel a transform function on each element of a + sequence and returns the minimum value. + + The type of elements of . + A sequence of values to determine the minimum value of. + A transform function to apply to each element. + The minimum value in the sequence. + + or is a null reference (Nothing in Visual Basic). + + + contains no elements. + + + One or more exceptions occurred during the evaluation of the query. + + + The query was canceled. + + + + + Invokes in parallel a transform function on each element of a + sequence and returns the minimum value. + + The type of elements of . + A sequence of values to determine the minimum value of. + A transform function to apply to each element. + The minimum value in the sequence. + + or is a null reference (Nothing in Visual Basic). + + + One or more exceptions occurred during the evaluation of the query. + + + The query was canceled. + + + + + Invokes in parallel a transform function on each element of a + sequence and returns the minimum value. + + The type of elements of . + A sequence of values to determine the minimum value of. + A transform function to apply to each element. + The minimum value in the sequence. + + or is a null reference (Nothing in Visual Basic). + + + contains no elements. + + + One or more exceptions occurred during the evaluation of the query. + + + The query was canceled. + + + + + Invokes in parallel a transform function on each element of a + sequence and returns the minimum value. + + The type of elements of . + A sequence of values to determine the minimum value of. + A transform function to apply to each element. + The minimum value in the sequence. + + or is a null reference (Nothing in Visual Basic). + + + One or more exceptions occurred during the evaluation of the query. + + + The query was canceled. + + + + + Invokes in parallel a transform function on each element of a + sequence and returns the minimum value. + + The type of elements of . + A sequence of values to determine the minimum value of. + A transform function to apply to each element. + The minimum value in the sequence. + + or is a null reference (Nothing in Visual Basic). + + + contains no elements. + + + One or more exceptions occurred during the evaluation of the query. + + + The query was canceled. + + + + + Invokes in parallel a transform function on each element of a + sequence and returns the minimum value. + + The type of elements of . + A sequence of values to determine the minimum value of. + A transform function to apply to each element. + The minimum value in the sequence. + + or is a null reference (Nothing in Visual Basic). + + + One or more exceptions occurred during the evaluation of the query. + + + The query was canceled. + + + + + Invokes in parallel a transform function on each element of a + sequence and returns the minimum value. + + The type of elements of . + A sequence of values to determine the minimum value of. + A transform function to apply to each element. + The minimum value in the sequence. + + or is a null reference (Nothing in Visual Basic). + + + contains no elements. + + + One or more exceptions occurred during the evaluation of the query. + + + The query was canceled. + + + + + Invokes in parallel a transform function on each element of a + sequence and returns the minimum value. + + The type of elements of . + A sequence of values to determine the minimum value of. + A transform function to apply to each element. + The minimum value in the sequence. + + or is a null reference (Nothing in Visual Basic). + + + One or more exceptions occurred during the evaluation of the query. + + + The query was canceled. + + + + + Invokes in parallel a transform function on each element of a + sequence and returns the minimum value. + + The type of elements of . + A sequence of values to determine the minimum value of. + A transform function to apply to each element. + The minimum value in the sequence. + + or is a null reference (Nothing in Visual Basic). + + + contains no elements. + + + One or more exceptions occurred during the evaluation of the query. + + + The query was canceled. + + + + + Invokes in parallel a transform function on each element of a + sequence and returns the minimum value. + + The type of elements of . + A sequence of values to determine the minimum value of. + A transform function to apply to each element. + The minimum value in the sequence. + + or is a null reference (Nothing in Visual Basic). + + + One or more exceptions occurred during the evaluation of the query. + + + The query was canceled. + + + + + Invokes in parallel a transform function on each element of a + sequence and returns the minimum value. + + The type of elements of . + The type of the value returned by . + A sequence of values to determine the minimum value of. + A transform function to apply to each element. + The minimum value in the sequence. + + or is a null reference (Nothing in Visual Basic). + + + contains no elements and is a non-nullable value type. + + + One or more exceptions occurred during the evaluation of the query. + + + The query was canceled. + + + + + Returns the maximum value in a parallel sequence of values. + + A sequence of values to determine the maximum value of. + The maximum value in the sequence. + + is a null reference (Nothing in Visual Basic). + + + contains no elements. + + + One or more exceptions occurred during the evaluation of the query. + + + The query was canceled. + + + + + Returns the maximum value in a parallel sequence of values. + + A sequence of values to determine the maximum value of. + The maximum value in the sequence. + + is a null reference (Nothing in Visual Basic). + + + One or more exceptions occurred during the evaluation of the query. + + + The query was canceled. + + + + + Returns the maximum value in a parallel sequence of values. + + A sequence of values to determine the maximum value of. + The maximum value in the sequence. + + is a null reference (Nothing in Visual Basic). + + + contains no elements. + + + One or more exceptions occurred during the evaluation of the query. + + + The query was canceled. + + + + + Returns the maximum value in a parallel sequence of values. + + A sequence of values to determine the maximum value of. + The maximum value in the sequence. + + is a null reference (Nothing in Visual Basic). + + + One or more exceptions occurred during the evaluation of the query. + + + The query was canceled. + + + + + Returns the maximum value in a parallel sequence of values. + + A sequence of values to determine the maximum value of. + The maximum value in the sequence. + + is a null reference (Nothing in Visual Basic). + + + contains no elements. + + + One or more exceptions occurred during the evaluation of the query. + + + The query was canceled. + + + + + Returns the maximum value in a parallel sequence of values. + + A sequence of values to determine the maximum value of. + The maximum value in the sequence. + + is a null reference (Nothing in Visual Basic). + + + One or more exceptions occurred during the evaluation of the query. + + + The query was canceled. + + + + + Returns the maximum value in a parallel sequence of values. + + A sequence of values to determine the maximum value of. + The maximum value in the sequence. + + is a null reference (Nothing in Visual Basic). + + + contains no elements. + + + One or more exceptions occurred during the evaluation of the query. + + + The query was canceled. + + + + + Returns the maximum value in a parallel sequence of values. + + A sequence of values to determine the maximum value of. + The maximum value in the sequence. + + is a null reference (Nothing in Visual Basic). + + + One or more exceptions occurred during the evaluation of the query. + + + The query was canceled. + + + + + Returns the maximum value in a parallel sequence of values. + + A sequence of values to determine the maximum value of. + The maximum value in the sequence. + + is a null reference (Nothing in Visual Basic). + + + contains no elements. + + + One or more exceptions occurred during the evaluation of the query. + + + The query was canceled. + + + + + Returns the maximum value in a parallel sequence of values. + + A sequence of values to determine the maximum value of. + The maximum value in the sequence. + + is a null reference (Nothing in Visual Basic). + + + One or more exceptions occurred during the evaluation of the query. + + + The query was canceled. + + + + + Returns the maximum value in a parallel sequence of values. + + A sequence of values to determine the maximum value of. + The maximum value in the sequence. + + is a null reference (Nothing in Visual Basic). + + + contains no elements and is a non-nullable value type. + + + One or more exceptions occurred during the evaluation of the query. + + + The query was canceled. + + + + + Invokes in parallel a transform function on each element of a + sequence and returns the maximum value. + + The type of elements of . + A sequence of values to determine the maximum value of. + A transform function to apply to each element. + The maximum value in the sequence. + + or is a null reference (Nothing in Visual Basic). + + + contains no elements. + + + One or more exceptions occurred during the evaluation of the query. + + + The query was canceled. + + + + + Invokes in parallel a transform function on each element of a + sequence and returns the maximum value. + + The type of elements of . + A sequence of values to determine the maximum value of. + A transform function to apply to each element. + The maximum value in the sequence. + + or is a null reference (Nothing in Visual Basic). + + + One or more exceptions occurred during the evaluation of the query. + + + The query was canceled. + + + + + Invokes in parallel a transform function on each element of a + sequence and returns the maximum value. + + The type of elements of . + A sequence of values to determine the maximum value of. + A transform function to apply to each element. + The maximum value in the sequence. + + or is a null reference (Nothing in Visual Basic). + + + contains no elements. + + + One or more exceptions occurred during the evaluation of the query. + + + The query was canceled. + + + + + Invokes in parallel a transform function on each element of a + sequence and returns the maximum value. + + The type of elements of . + A sequence of values to determine the maximum value of. + A transform function to apply to each element. + The maximum value in the sequence. + + or is a null reference (Nothing in Visual Basic). + + + One or more exceptions occurred during the evaluation of the query. + + + The query was canceled. + + + + + Invokes in parallel a transform function on each element of a + sequence and returns the maximum value. + + The type of elements of . + A sequence of values to determine the maximum value of. + A transform function to apply to each element. + The maximum value in the sequence. + + or is a null reference (Nothing in Visual Basic). + + + contains no elements. + + + One or more exceptions occurred during the evaluation of the query. + + + The query was canceled. + + + + + Invokes in parallel a transform function on each element of a + sequence and returns the maximum value. + + The type of elements of . + A sequence of values to determine the maximum value of. + A transform function to apply to each element. + The maximum value in the sequence. + + or is a null reference (Nothing in Visual Basic). + + + One or more exceptions occurred during the evaluation of the query. + + + The query was canceled. + + + + + Invokes in parallel a transform function on each element of a + sequence and returns the maximum value. + + The type of elements of . + A sequence of values to determine the maximum value of. + A transform function to apply to each element. + The maximum value in the sequence. + + or is a null reference (Nothing in Visual Basic). + + + contains no elements. + + + One or more exceptions occurred during the evaluation of the query. + + + The query was canceled. + + + + + Invokes in parallel a transform function on each element of a + sequence and returns the maximum value. + + The type of elements of . + A sequence of values to determine the maximum value of. + A transform function to apply to each element. + The maximum value in the sequence. + + or is a null reference (Nothing in Visual Basic). + + + One or more exceptions occurred during the evaluation of the query. + + + The query was canceled. + + + + + Invokes in parallel a transform function on each element of a + sequence and returns the maximum value. + + The type of elements of . + A sequence of values to determine the maximum value of. + A transform function to apply to each element. + The maximum value in the sequence. + + or is a null reference (Nothing in Visual Basic). + + + contains no elements. + + + One or more exceptions occurred during the evaluation of the query. + + + The query was canceled. + + + + + Invokes in parallel a transform function on each element of a + sequence and returns the maximum value. + + The type of elements of . + A sequence of values to determine the maximum value of. + A transform function to apply to each element. + The maximum value in the sequence. + + or is a null reference (Nothing in Visual Basic). + + + One or more exceptions occurred during the evaluation of the query. + + + The query was canceled. + + + + + Invokes in parallel a transform function on each element of a + sequence and returns the maximum value. + + The type of elements of . + The type of the value returned by . + A sequence of values to determine the maximum value of. + A transform function to apply to each element. + The maximum value in the sequence. + + or is a null reference (Nothing in Visual Basic). + + + contains no elements and is a non-nullable value type. + + + One or more exceptions occurred during the evaluation of the query. + + + The query was canceled. + + + + + Computes in parallel the average of a sequence of values. + + A sequence of values that are used to calculate an average. + The average of the sequence of values. + + is a null reference (Nothing in Visual Basic). + + + contains no elements. + + + The sum or count of the elements in the sequence is larger than . + -or- + One or more exceptions occurred during the evaluation of the query. + + + The query was canceled. + + + + + Computes in parallel the average of a sequence of values. + + A sequence of values that are used to calculate an average. + The average of the sequence of values. + + is a null reference (Nothing in Visual Basic). + + + The sum or count of the elements in the sequence is larger than . + -or- + One or more exceptions occurred during the evaluation of the query. + + + The query was canceled. + + + + + Computes in parallel the average of a sequence of values. + + A sequence of values that are used to calculate an average. + The average of the sequence of values. + + is a null reference (Nothing in Visual Basic). + + + contains no elements. + + + The sum or count of the elements in the sequence is larger than . + -or- + One or more exceptions occurred during the evaluation of the query. + + + The query was canceled. + + + + + Computes in parallel the average of a sequence of values. + + A sequence of values that are used to calculate an average. + The average of the sequence of values. + + is a null reference (Nothing in Visual Basic). + + + The sum or count of the elements in the sequence is larger than . + -or- + One or more exceptions occurred during the evaluation of the query. + + + The query was canceled. + + + + + Computes in parallel the average of a sequence of values. + + A sequence of values that are used to calculate an average. + The average of the sequence of values. + + is a null reference (Nothing in Visual Basic). + + + contains no elements. + + + One or more exceptions occurred during the evaluation of the query. + + + The query was canceled. + + + + + Computes in parallel the average of a sequence of values. + + A sequence of values that are used to calculate an average. + The average of the sequence of values. + + is a null reference (Nothing in Visual Basic). + + + One or more exceptions occurred during the evaluation of the query. + + + The query was canceled. + + + + + Computes in parallel the average of a sequence of values. + + A sequence of values that are used to calculate an average. + The average of the sequence of values. + + is a null reference (Nothing in Visual Basic). + + + contains no elements. + + + One or more exceptions occurred during the evaluation of the query. + + + The query was canceled. + + + + + Computes in parallel the average of a sequence of values. + + + A sequence of values that are used to calculate an average. + The average of the sequence of values. + is a null reference (Nothing in Visual Basic). + + + One or more exceptions occurred during the evaluation of the query. + + + The query was canceled. + + + + + Computes in parallel the average of a sequence of values. + + A sequence of values that are used to calculate an average. + The average of the sequence of values. + + is a null reference (Nothing in Visual Basic). + + + contains no elements. + + + One or more exceptions occurred during the evaluation of the query. + + + The query was canceled. + + + + + Computes in parallel the average of a sequence of values. + + A sequence of values that are used to calculate an average. + The average of the sequence of values. + + is a null reference (Nothing in Visual Basic). + + + One or more exceptions occurred during the evaluation of the query. + + + The query was canceled. + + + + + Computes in parallel the average of a sequence of values that are obtained + by invoking a transform function on each element of the input sequence. + + The type of elements of . + A sequence of values that are used to calculate an average. + A transform function to apply to each element. + The average of the sequence of values. + + or is a null reference (Nothing in Visual Basic). + + + contains no elements. + + + The sum or count of the elements in the sequence is larger than . + -or- + One or more exceptions occurred during the evaluation of the query. + + + The query was canceled. + + + + + Computes in parallel the average of a sequence of values that are obtained + by invoking a transform function on each element of the input sequence. + + The type of elements of . + A sequence of values that are used to calculate an average. + A transform function to apply to each element. + The average of the sequence of values. + + or is a null reference (Nothing in Visual Basic). + + + The sum or count of the elements in the sequence is larger than . + -or- + One or more exceptions occurred during the evaluation of the query. + + + The query was canceled. + + + + + Computes in parallel the average of a sequence of values that are obtained + by invoking a transform function on each element of the input sequence. + + The type of elements of . + A sequence of values that are used to calculate an average. + A transform function to apply to each element. + The average of the sequence of values. + + or is a null reference (Nothing in Visual Basic). + + + contains no elements. + + + The sum or count of the elements in the sequence is larger than . + -or- + One or more exceptions occurred during the evaluation of the query. + + + The query was canceled. + + + + + Computes in parallel the average of a sequence of values that are obtained + by invoking a transform function on each element of the input sequence. + + The type of elements of . + A sequence of values that are used to calculate an average. + A transform function to apply to each element. + The average of the sequence of values. + + or is a null reference (Nothing in Visual Basic). + + + The sum or count of the elements in the sequence is larger than . + -or- + One or more exceptions occurred during the evaluation of the query. + + + The query was canceled. + + + + + Computes in parallel the average of a sequence of values that are obtained + by invoking a transform function on each element of the input sequence. + + The type of elements of . + A sequence of values that are used to calculate an average. + A transform function to apply to each element. + The average of the sequence of values. + + or is a null reference (Nothing in Visual Basic). + + + contains no elements. + + + One or more exceptions occurred during the evaluation of the query. + + + The query was canceled. + + + + + Computes in parallel the average of a sequence of values that are obtained + by invoking a transform function on each element of the input sequence. + + The type of elements of . + A sequence of values that are used to calculate an average. + A transform function to apply to each element. + The average of the sequence of values. + + or is a null reference (Nothing in Visual Basic). + + + One or more exceptions occurred during the evaluation of the query. + + + The query was canceled. + + + + + Computes in parallel the average of a sequence of values that are obtained + by invoking a transform function on each element of the input sequence. + + The type of elements of . + A sequence of values that are used to calculate an average. + A transform function to apply to each element. + The average of the sequence of values. + + or is a null reference (Nothing in Visual Basic). + + + contains no elements. + + + One or more exceptions occurred during the evaluation of the query. + + + The query was canceled. + + + + + Computes in parallel the average of a sequence of values that are obtained + by invoking a transform function on each element of the input sequence. + + The type of elements of . + A sequence of values that are used to calculate an average. + A transform function to apply to each element. + The average of the sequence of values. + + or is a null reference (Nothing in Visual Basic). + + + One or more exceptions occurred during the evaluation of the query. + + + The query was canceled. + + + + + Computes in parallel the average of a sequence of values that are obtained + by invoking a transform function on each element of the input sequence. + + The type of elements of . + A sequence of values that are used to calculate an average. + A transform function to apply to each element. + The average of the sequence of values. + + or is a null reference (Nothing in Visual Basic). + + + contains no elements. + + + One or more exceptions occurred during the evaluation of the query. + + + The query was canceled. + + + + + Computes in parallel the average of a sequence of values that are obtained + by invoking a transform function on each element of the input sequence. + + The type of elements of . + A sequence of values that are used to calculate an average. + A transform function to apply to each element. + The average of the sequence of values. + + or is a null reference (Nothing in Visual Basic). + + + One or more exceptions occurred during the evaluation of the query. + + + The query was canceled. + + + + + Determines in parallel whether any element of a sequence satisfies a condition. + + The type of elements of . + An IEnumerable whose elements to apply the predicate to. + A function to test each element for a condition. + + true if any elements in the source sequence pass the test in the specified predicate; otherwise, false. + + + or is a null reference (Nothing in Visual Basic). + + + One or more exceptions occurred during the evaluation of the query. + + + The query was canceled. + + + + + Determines whether a parallel sequence contains any elements. + + The type of elements of . + The IEnumerable to check for emptiness. + true if the source sequence contains any elements; otherwise, false. + + is a null reference (Nothing in Visual Basic). + + + One or more exceptions occurred during the evaluation of the query. + + + The query was canceled. + + + + + Determines in parallel whether all elements of a sequence satisfy a condition. + + The type of elements of . + A sequence whose elements to apply the predicate to. + A function to test each element for a condition. + + true if all elements in the source sequence pass the test in the specified predicate; otherwise, false. + + + or is a null reference (Nothing in Visual Basic). + + + One or more exceptions occurred during the evaluation of the query. + + + The query was canceled. + + + + + Determines in parallel whether a sequence contains a specified element + by using the default equality comparer. + + The type of elements of . + A sequence in which to locate a value. + The value to locate in the sequence. + + true if the source sequence contains an element that has the specified value; otherwise, false. + + + is a null reference (Nothing in Visual Basic). + + + One or more exceptions occurred during the evaluation of the query. + + + The query was canceled. + + + + + Determines in parallel whether a sequence contains a specified element by using a + specified IEqualityComparer{T}. + + The type of elements of . + A sequence in which to locate a value. + The value to locate in the sequence. + An equality comparer to compare values. + + true if the source sequence contains an element that has the specified value; otherwise, false. + + + is a null reference (Nothing in Visual Basic). + + + One or more exceptions occurred during the evaluation of the query. + + + The query was canceled. + + + + + Returns a specified number of contiguous elements from the start of a parallel sequence. + + The type of elements of . + The sequence to return elements from. + The number of elements to return. + + A sequence that contains the specified number of elements from the start of the input sequence. + + + is a null reference (Nothing in Visual Basic). + + + + + Returns elements from a parallel sequence as long as a specified condition is true. + + The type of elements of . + The sequence to return elements from. + A function to test each element for a condition. + + A sequence that contains the elements from the input sequence that occur before + the element at which the test no longer passes. + + + or is a null reference (Nothing in Visual Basic). + + + + + Returns elements from a parallel sequence as long as a specified condition is true. + The element's index is used in the logic of the predicate function. + + The type of elements of . + The sequence to return elements from. + + A function to test each source element for a condition; the second parameter of the + function represents the index of the source element. + + + A sequence that contains elements from the input sequence that occur before + the element at which the test no longer passes. + + + or is a null reference (Nothing in Visual Basic). + + + + + Bypasses a specified number of elements in a parallel sequence and then returns the remaining elements. + + The type of elements of . + The sequence to return elements from. + The number of elements to skip before returning the remaining elements. + + A sequence that contains the elements that occur after the specified index in the input sequence. + + + is a null reference (Nothing in Visual Basic). + + + + + Bypasses elements in a parallel sequence as long as a specified + condition is true and then returns the remaining elements. + + The type of elements of . + The sequence to return elements from. + A function to test each element for a condition. + A sequence that contains the elements from the input sequence starting at + the first element in the linear series that does not pass the test specified by + predicate. + + or is a null reference (Nothing in Visual Basic). + + + + + Bypasses elements in a parallel sequence as long as a specified condition is true and + then returns the remaining elements. The element's index is used in the logic of + the predicate function. + + The type of elements of . + The sequence to return elements from. + + A function to test each source element for a condition; the + second parameter of the function represents the index of the source element. + + + A sequence that contains the elements from the input sequence starting at the + first element in the linear series that does not pass the test specified by + predicate. + + + or is a null reference (Nothing in Visual Basic). + + + + + Concatenates two parallel sequences. + + The type of the elements of the input sequences. + The first sequence to concatenate. + The sequence to concatenate to the first sequence. + A sequence that contains the concatenated elements of the two input sequences. + + or is a null reference (Nothing in Visual Basic). + + + + + This Concat overload should never be called. + This method is marked as obsolete and always throws when called. + + This type parameter is not used. + This parameter is not used. + This parameter is not used. + This overload always throws a . + The exception that occurs when this method is called. + + This overload exists to disallow usage of Concat with a left data source of type + and a right data source of type . + Otherwise, the Concat operator would appear to be binding to the parallel implementation, + but would in reality bind to the sequential implementation. + + + + + Determines whether two parallel sequences are equal by comparing the elements by using + the default equality comparer for their type. + + The type of the elements of the input sequences. + A sequence to compare to second. + A sequence to compare to the first input sequence. + + true if the two source sequences are of equal length and their corresponding elements + are equal according to the default equality comparer for their type; otherwise, false. + + + or is a null reference (Nothing in Visual Basic). + + + One or more exceptions occurred during the evaluation of the query. + + + The query was canceled. + + + + + This SequenceEqual overload should never be called. + This method is marked as obsolete and always throws when called. + + This type parameter is not used. + This parameter is not used. + This parameter is not used. + This overload always throws a . + Thrown every time this method is called. + + This overload exists to disallow usage of SequenceEqual with a left data source of type + and a right data source of type . + Otherwise, the SequenceEqual operator would appear to be binding to the parallel implementation, + but would in reality bind to the sequential implementation. + + + + + Determines whether two parallel sequences are equal by comparing their elements by + using a specified IEqualityComparer{T}. + + The type of the elements of the input sequences. + A sequence to compare to . + A sequence to compare to the first input sequence. + An IEqualityComparer<(Of <(T>)>) to use to compare elements. + + true if the two source sequences are of equal length and their corresponding + elements are equal according to the default equality comparer for their type; otherwise, false. + + + or is a null reference (Nothing in Visual Basic). + + + One or more exceptions occurred during the evaluation of the query. + + + The query was canceled. + + + + + A helper method for SequenceEqual to dispose an enumerator. If an exception is thrown by the disposal, + it gets wrapped into an AggregateException, unless it is an OCE with the query's CancellationToken. + + + + + This SequenceEqual overload should never be called. + This method is marked as obsolete and always throws when called. + + This type parameter is not used. + This parameter is not used. + This parameter is not used. + This parameter is not used. + This overload always throws a . + Thrown every time this method is called. + + This overload exists to disallow usage of SequenceEqual with a left data source of type + and a right data source of type . + Otherwise, the SequenceEqual operator would appear to be binding to the parallel implementation, + but would in reality bind to sequential implementation. + + + + + Returns distinct elements from a parallel sequence by using the + default equality comparer to compare values. + + The type of the elements of . + The sequence to remove duplicate elements from. + A sequence that contains distinct elements from the source sequence. + + is a null reference (Nothing in Visual Basic). + + + + + Returns distinct elements from a parallel sequence by using a specified + IEqualityComparer{T} to compare values. + + The type of the elements of . + The sequence to remove duplicate elements from. + An IEqualityComparer<(Of <(T>)>) to compare values. + A sequence that contains distinct elements from the source sequence. + + is a null reference (Nothing in Visual Basic). + + + + + Produces the set union of two parallel sequences by using the default equality comparer. + + The type of the elements of the input sequences. + A sequence whose distinct elements form the first set for the union. + A sequence whose distinct elements form the second set for the union. + A sequence that contains the elements from both input sequences, excluding duplicates. + + or is a null reference (Nothing in Visual Basic). + + + + + This Union overload should never be called. + This method is marked as obsolete and always throws when called. + + This type parameter is not used. + This parameter is not used. + This parameter is not used. + This overload always throws a . + The exception that occurs when this method is called. + + This overload exists to disallow usage of Union with a left data source of type + and a right data source of type . + Otherwise, the Union operator would appear to be binding to the parallel implementation, + but would in reality bind to sequential implementation. + + + + + Produces the set union of two parallel sequences by using a specified IEqualityComparer{T}. + + The type of the elements of the input sequences. + A sequence whose distinct elements form the first set for the union. + A sequence whose distinct elements form the second set for the union. + An IEqualityComparer<(Of <(T>)>) to compare values. + A sequence that contains the elements from both input sequences, excluding duplicates. + + or is a null reference (Nothing in Visual Basic). + + + + + This Union overload should never be called. + This method is marked as obsolete and always throws when called. + + This type parameter is not used. + This parameter is not used. + This parameter is not used. + This parameter is not used. + This overload always throws a . + The exception that occurs when this method is called. + + This overload exists to disallow usage of Union with a left data source of type + and a right data source of type . + Otherwise, the Union operator would appear to be binding to the parallel implementation, + but would in reality bind to the sequential implementation. + + + + + Produces the set intersection of two parallel sequences by using the + default equality comparer to compare values. + + The type of the elements of the input sequences. + A sequence whose distinct elements that also appear in will be returned. + + + A sequence whose distinct elements that also appear in the first sequence will be returned. + + A sequence that contains the elements that form the set intersection of two sequences. + + or is a null reference (Nothing in Visual Basic). + + + + + This Intersect overload should never be called. + This method is marked as obsolete and always throws when called. + + This type parameter is not used. + This parameter is not used. + This parameter is not used. + This overload always throws a . + The exception that occurs when this method is called. + + This overload exists to disallow usage of Intersect with a left data source of type + and a right data source of type . + Otherwise, the Intersect operator would appear to be binding to the parallel implementation, + but would in reality bind to the sequential implementation. + + + + + Produces the set intersection of two parallel sequences by using + the specified IEqualityComparer{T} to compare values. + + The type of the elements of the input sequences. + + A sequence whose distinct elements that also appear in will be returned. + + + A sequence whose distinct elements that also appear in the first sequence will be returned. + + An IEqualityComparer<(Of <(T>)>) to compare values. + A sequence that contains the elements that form the set intersection of two sequences. + + or is a null reference (Nothing in Visual Basic). + + + + + This Intersect overload should never be called. + This method is marked as obsolete and always throws when called. + + This type parameter is not used. + This parameter is not used. + This parameter is not used. + This parameter is not used. + This overload always throws a . + The exception that occurs when this method is called. + + This overload exists to disallow usage of Intersect with a left data source of type + and a right data source of type . + Otherwise, the Intersect operator would appear to be binding to the parallel implementation, + but would in reality bind to the sequential implementation. + + + + + Produces the set difference of two parallel sequences by using + the default equality comparer to compare values. + + The type of the elements of the input sequences. + + A sequence whose elements that are not also in will be returned. + + + A sequence whose elements that also occur in the first sequence will cause those + elements to be removed from the returned sequence. + + A sequence that contains the set difference of the elements of two sequences. + + or is a null reference (Nothing in Visual Basic). + + + + + This Except overload should never be called. + This method is marked as obsolete and always throws when called. + + This type parameter is not used. + This parameter is not used. + This parameter is not used. + This overload always throws a . + The exception that occurs when this method is called. + + This overload exists to disallow usage of Except with a left data source of type + and a right data source of type . + Otherwise, the Except operator would appear to be binding to the parallel implementation, + but would in reality bind to the sequential implementation. + + + + + Produces the set difference of two parallel sequences by using the + specified IEqualityComparer{T} to compare values. + + The type of the elements of the input sequences. + A sequence whose elements that are not also in will be returned. + + A sequence whose elements that also occur in the first sequence will cause those elements + to be removed from the returned sequence. + + An IEqualityComparer<(Of <(T>)>) to compare values. + A sequence that contains the set difference of the elements of two sequences. + + or is a null reference (Nothing in Visual Basic). + + + + + This Except overload should never be called. + This method is marked as obsolete and always throws when called. + + This type parameter is not used. + This parameter is not used. + This parameter is not used. + This parameter is not used. + This overload always throws a . + The exception that occurs when this method is called. + + This overload exists to disallow usage of Except with a left data source of type + and a right data source of type . + Otherwise, the Except operator would appear to be binding to the parallel implementation, + but would in reality bind to the sequential implementation. + + + + + Converts a into an + to force sequential + evaluation of the query. + + The type of the elements of . + The sequence to type as . + The input sequence types as . + + is a null reference (Nothing in Visual Basic). + + + + + Creates an array from a ParallelQuery{T}. + + The type of the elements of . + A sequence to create an array from. + An array that contains the elements from the input sequence. + + is a null reference (Nothing in Visual Basic). + + + One or more exceptions occurred during the evaluation of the query. + + + The query was canceled. + + + + + Creates a List{T} from an ParallelQuery{T}. + + The type of the elements of . + A sequence to create a List<(Of <(T>)>) from. + A List<(Of <(T>)>) that contains elements from the input sequence. + + is a null reference (Nothing in Visual Basic). + + + One or more exceptions occurred during the evaluation of the query. + + + The query was canceled. + + + + + Creates a Dictionary{TKey,TValue} from a ParallelQuery{T} according to + a specified key selector function. + + The type of the elements of . + The type of the key returned by . + A sequence to create a Dictionary<(Of <(TKey, TValue>)>) from. + A function to extract a key from each element. + A Dictionary<(Of <(TKey, TValue>)>) that contains keys and values. + + or is a null reference (Nothing in Visual Basic). + + + produces a key that is a null reference (Nothing in Visual Basic). + -or- + produces duplicate keys for two elements. + -or- + One or more exceptions occurred during the evaluation of the query. + + + The query was canceled. + + + + + Creates a Dictionary{TKey,TValue} from a ParallelQuery{T} according to a + specified key selector function and key comparer. + + The type of the elements of . + The type of the key returned by . + A sequence to create a Dictionary<(Of <(TKey, TValue>)>) from. + A function to extract a key from each element. + An IEqualityComparer<(Of <(T>)>) to compare keys. + A Dictionary<(Of <(TKey, TValue>)>) that contains keys and values. + + or is a null reference (Nothing in Visual Basic). + + + produces a key that is a null reference (Nothing in Visual Basic). + -or- + produces duplicate keys for two elements. + -or- + One or more exceptions occurred during the evaluation of the query. + + + The query was canceled. + + + + + Creates a Dictionary{TKey,TValue} from a ParallelQuery{T} according to specified + key selector and element selector functions. + + The type of the elements of . + The type of the key returned by . + The type of the value returned by . + A sequence to create a Dictionary<(Of <(TKey, TValue>)>) from. + A function to extract a key from each element. + + A transform function to produce a result element value from each element. + + + A Dictionary<(Of <(TKey, TValue>)>) that contains values of type + selected from the input sequence + + + or or is a null reference (Nothing in Visual Basic). + + + produces a key that is a null reference (Nothing in Visual Basic). + -or- + produces duplicate keys for two elements. + -or- + One or more exceptions occurred during the evaluation of the query. + + + The query was canceled. + + + + + Creates a Dictionary{TKey,TValue from a ParallelQuery{T} according to a + specified key selector function, a comparer, and an element selector function. + + The type of the elements of . + The type of the key returned by . + The type of the value returned by . + A sequence to create a Dictionary<(Of <(TKey, TValue>)>) from. + A function to extract a key from each element. + A transform function to produce a result element + value from each element. + An IEqualityComparer<(Of <(T>)>) to compare keys. + + A Dictionary<(Of <(TKey, TValue>)>) that contains values of type + selected from the input sequence + + + or or is a null reference (Nothing in Visual Basic). + + + produces a key that is a null reference (Nothing in Visual Basic). + -or- + produces duplicate keys for two elements. + -or- + One or more exceptions occurred during the evaluation of the query. + + + The query was canceled. + + + + + Creates an ILookup{TKey,T} from a ParallelQuery{T} according to a specified key selector function. + + The type of elements of . + The type of the key returned by . + The sequence to create a Lookup<(Of <(TKey, TElement>)>) from. + A function to extract a key from each element. + A Lookup<(Of <(TKey, TElement>)>) that contains keys and values. + + or is a null reference (Nothing in Visual Basic). + + + One or more exceptions occurred during the evaluation of the query. + + + The query was canceled. + + + + + Creates an ILookup{TKey,T} from a ParallelQuery{T} according to a specified + key selector function and key comparer. + + The type of elements of . + The type of the key returned by . + The sequence to create a Lookup<(Of <(TKey, TElement>)>) from. + A function to extract a key from each element. + An IEqualityComparer<(Of <(T>)>) to compare keys. + A Lookup<(Of <(TKey, TElement>)>) that contains keys and values. + + or or is a null reference (Nothing in Visual Basic). + + + One or more exceptions occurred during the evaluation of the query. + + + The query was canceled. + + + + + Creates an ILookup{TKey,TElement} from a ParallelQuery{T} according to specified + key selector and element selector functions. + + The type of elements of . + The type of the key returned by . + The type of the value returned by . + The sequence to create a Lookup<(Of <(TKey, TElement>)>) from. + A function to extract a key from each element. + + A transform function to produce a result element value from each element. + + + A Lookup<(Of <(TKey, TElement>)>) that contains values of type TElement + selected from the input sequence. + + + or or is a null reference (Nothing in Visual Basic). + + + One or more exceptions occurred during the evaluation of the query. + + + The query was canceled. + + + + + Creates an ILookup{TKey,TElement} from a ParallelQuery{T} according to + a specified key selector function, a comparer and an element selector function. + + The type of elements of . + The type of the key returned by . + The type of the value returned by . + The sequence to create a Lookup<(Of <(TKey, TElement>)>) from. + A function to extract a key from each element. + + A transform function to produce a result element value from each element. + + An IEqualityComparer<(Of <(T>)>) to compare keys. + + A Lookup<(Of <(TKey, TElement>)>) that contains values of type TElement selected + from the input sequence. + + + or or is a null reference (Nothing in Visual Basic). + + + One or more exceptions occurred during the evaluation of the query. + + + The query was canceled. + + + + + Inverts the order of the elements in a parallel sequence. + + The type of the elements of . + A sequence of values to reverse. + A sequence whose elements correspond to those of the input sequence in reverse order. + + is a null reference (Nothing in Visual Basic). + + + + + Filters the elements of a ParallelQuery based on a specified type. + + The type to filter the elements of the sequence on. + The sequence whose elements to filter. + A sequence that contains elements from the input sequence of type . + + is a null reference (Nothing in Visual Basic). + + + + + Converts the elements of a ParallelQuery to the specified type. + + The type to convert the elements of to. + The sequence that contains the elements to be converted. + + A sequence that contains each element of the source sequence converted to the specified type. + + + is a null reference (Nothing in Visual Basic). + + + + + Returns the first element of a parallel sequence. + The type of the elements of . + The sequence to return the first element of. + The first element in the specified sequence. + + is a null reference (Nothing in Visual Basic). + + + contains no elements. + + + One or more exceptions occurred during the evaluation of the query. + + + The query was canceled. + + + + + Returns the first element in a parallel sequence that satisfies a specified condition. + + There's a temporary difference from LINQ to Objects, this does not throw + ArgumentNullException when the predicate is null. + The type of the elements of . + The sequence to return an element from. + A function to test each element for a condition. + The first element in the sequence that passes the test in the specified predicate function. + + or is a null reference (Nothing in Visual Basic). + + + No element in satisfies the condition in . + + + One or more exceptions occurred during the evaluation of the query. + + + The query was canceled. + + + + + Returns the first element of a parallel sequence, or a default value if the + sequence contains no elements. + + The type of the elements of . + The sequence to return the first element of. + + default(TSource) if is empty; otherwise, the first element in . + + + is a null reference (Nothing in Visual Basic). + + + One or more exceptions occurred during the evaluation of the query. + + + The query was canceled. + + + + + Returns the first element of the parallel sequence that satisfies a condition or a + default value if no such element is found. + + There's a temporary difference from LINQ to Objects, this does not throw + ArgumentNullException when the predicate is null. + The type of the elements of . + The sequence to return an element from. + A function to test each element for a condition. + + default(TSource) if is empty or if no element passes the test + specified by predicate; otherwise, the first element in that + passes the test specified by predicate. + + + or is a null reference (Nothing in Visual Basic). + + + One or more exceptions occurred during the evaluation of the query. + + + The query was canceled. + + + + + Returns the last element of a parallel sequence. + The type of the elements of . + The sequence to return the last element from. + The value at the last position in the source sequence. + + is a null reference (Nothing in Visual Basic). + + + contains no elements. + + + One or more exceptions occurred during the evaluation of the query. + + + The query was canceled. + + + + + Returns the last element of a parallel sequence that satisfies a specified condition. + + The type of the elements of . + The sequence to return an element from. + A function to test each element for a condition. + + The last element in the sequence that passes the test in the specified predicate function. + + + or is a null reference (Nothing in Visual Basic). + + + No element in satisfies the condition in . + + + One or more exceptions occurred during the evaluation of the query. + + + The query was canceled. + + + + + Returns the last element of a parallel sequence, or a default value if the + sequence contains no elements. + + The type of the elements of . + The sequence to return an element from. + + default() if the source sequence is empty; otherwise, the last element in the sequence. + + + is a null reference (Nothing in Visual Basic). + + + One or more exceptions occurred during the evaluation of the query. + + + The query was canceled. + + + + + Returns the last element of a parallel sequence that satisfies a condition, or + a default value if no such element is found. + + The type of the elements of . + The sequence to return an element from. + A function to test each element for a condition. + + default() if the sequence is empty or if no elements pass the test in the + predicate function; otherwise, the last element that passes the test in the predicate function. + + + or is a null reference (Nothing in Visual Basic). + + + One or more exceptions occurred during the evaluation of the query. + + + The query was canceled. + + + + + Returns the only element of a parallel sequence, and throws an exception if there is not + exactly one element in the sequence. + + The type of the elements of . + The sequence to return the single element of. + The single element of the input sequence. + + is a null reference (Nothing in Visual Basic). + + + The input sequence contains more than one element. -or- The input sequence is empty. + + + One or more exceptions occurred during the evaluation of the query. + + + The query was canceled. + + + + + Returns the only element of a parallel sequence that satisfies a specified condition, + and throws an exception if more than one such element exists. + + The type of the elements of . + The sequence to return the single element of. + A function to test an element for a condition. + The single element of the input sequence that satisfies a condition. + + or is a null reference (Nothing in Visual Basic). + + + No element satisfies the condition in . -or- More than one element satisfies the condition in . + + + One or more exceptions occurred during the evaluation of the query. + + + The query was canceled. + + + + + Returns the only element of a parallel sequence, or a default value if the sequence is + empty; this method throws an exception if there is more than one element in the sequence. + + The type of the elements of . + The sequence to return the single element of. + + The single element of the input sequence, or default() if the + sequence contains no elements. + + + is a null reference (Nothing in Visual Basic). + + + One or more exceptions occurred during the evaluation of the query. + + + The query was canceled. + + + + + Returns the only element of a parallel sequence that satisfies a specified condition + or a default value if no such element exists; this method throws an exception + if more than one element satisfies the condition. + + The type of the elements of . + The sequence to return the single element of. + A function to test an element for a condition. + + The single element of the input sequence that satisfies the condition, or + default() if no such element is found. + + + or is a null reference (Nothing in Visual Basic). + + + One or more exceptions occurred during the evaluation of the query. + + + The query was canceled. + + + + + Returns the elements of the specified parallel sequence or the type parameter's + default value in a singleton collection if the sequence is empty. + + The type of the elements of . + The sequence to return a default value for if it is empty. + + A sequence that contains default(TSource) if is empty; otherwise, . + + + is a null reference (Nothing in Visual Basic). + + + + + Returns the elements of the specified parallel sequence or the specified value + in a singleton collection if the sequence is empty. + + The type of the elements of . + The sequence to return the specified value for if it is empty. + The value to return if the sequence is empty. + + A sequence that contains defaultValue if is empty; otherwise, . + + + is a null reference (Nothing in Visual Basic). + + + + + Returns the element at a specified index in a parallel sequence. + + The type of the elements of . + A sequence to return an element from. + The zero-based index of the element to retrieve. + The element at the specified position in the source sequence. + + is a null reference (Nothing in Visual Basic). + + + is less than 0 or greater than or equal to the number of elements in . + + + One or more exceptions occurred during the evaluation of the query. + + + The query was canceled. + + + + + Returns the element at a specified index in a parallel sequence or a default value if the + index is out of range. + + The type of the elements of . + A sequence to return an element from. + The zero-based index of the element to retrieve. + + default(TSource) if the index is outside the bounds of the source sequence; + otherwise, the element at the specified position in the source sequence. + + + is a null reference (Nothing in Visual Basic). + + + One or more exceptions occurred during the evaluation of the query. + + + The query was canceled. + + + + + Specifies the preferred type of output merge to use in a query. This is a hint only, and may not be + respected by the system when parallelizing all queries. + + + + Use NotBuffered for queries that will be consumed and output as streams, this has the lowest latency + between beginning query execution and elements being yielded. For some queries, such as those involving a + sort (OrderBy, OrderByDescending), buffering is essential and a hint of NotBuffered or AutoBuffered will + be ignored. + + + Use AutoBuffered for most cases; this is the default. It strikes a balance between latency and + overall performance. + + + Use FullyBuffered for queries when the entire output can be processed before the information is + needed. This option offers the best performance when all of the output can be accumulated before yielding + any information, though it is not suitable for stream processing or showing partial results mid-query. + + + + + + Use the default merge type, which is AutoBuffered. + + + + + Use a merge without output buffers. As soon as result elements have been computed, + make that element available to the consumer of the query. + + + + + Use a merge with output buffers of a size chosen by the system. Results + will accumulate into an output buffer before they are available to the consumer of + the query. + + + + + Use a merge with full output buffers. The system will accumulate all of the + results before making any of them available to the consumer of the query. + + + + + This is a bounded channel meant for single-producer/single-consumer scenarios. + + Specifies the type of data in the channel. + + + + The simplest channel is one that has no synchronization. This is used for stop- + and-go productions where we are guaranteed the consumer is not running + concurrently. It just wraps a FIFO queue internally. + + Assumptions: + Producers and consumers never try to enqueue/dequeue concurrently. + + + + + + We occassionally need a no-op enumerator to stand-in when we don't have data left + within a partition's data stream. These are simple enumerable and enumerator + implementations that always and consistently yield no elements. + + + + + + Represents a parallel sequence. + + + + + Represents a parallel sequence. + + + + + Returns an enumerator that iterates through the sequence. + + An enumerator that iterates through the sequence. + + + + Returns an enumerator that iterates through the sequence. + + An enumerator that iterates through the sequence. + + + + A common enumerator type that unifies all query operator enumerators. + + + + + + + A simple implementation of the IEnumerable{object} interface which wraps + a weakly typed IEnumerable object, allowing it to be accessed as a strongly typed + IEnumerable{object}. + + + + + + An interface that allows developers to specify their own partitioning routines. + + + + + + + A simple implementation of the ParallelQuery{object} interface which wraps an + underlying IEnumerable, such that it can be used in parallel queries. + + + + + A simple implementation of the ParallelQuery{T} interface which wraps an + underlying IEnumerable{T}, such that it can be used in parallel queries. + + + + + + An enum to specify whether an aggregate operator is associative, commutative, + neither, or both. This influences query analysis and execution: associative + aggregations can run in parallel, whereas non-associative cannot; non-commutative + aggregations must be run over data in input-order. + + + + + A simple enumerable type that implements the range algorithm. It also supports + partitioning of the indices by implementing an interface that PLINQ recognizes. + + + + + A simple enumerable type that implements the repeat algorithm. It also supports + partitioning of the count space by implementing an interface that PLINQ recognizes. + + + + + + A special merge helper for indexible queries. Given an indexible query, we know how many elements + we'll have in the result set, so we can allocate the array ahead of time. Then, as each result element + is produced, we can directly insert it into the appropriate position in the output array, paying + no extra cost for ordering. + + + + + + Used as a stand-in for replaceable merge algorithms. Alternative implementations + are chosen based on the style of merge required. + + + + + + Instantiates the array merge helper. + + The query settings + The query results + + + + A method used as a delegate passed into the ForAll operator + + + + + Schedules execution of the merge itself. + + + + + Gets the enumerator over the results. + + We never expect this method to be called. ArrayMergeHelper is intended to be used when we want + to consume the results using GetResultsAsArray(). + + + + + Returns the merged results as an array. + + + + + + An enumerator that merges multiple one-to-one channels into a single output + stream, including any necessary blocking and synchronization. This is an + asynchronous enumerator, i.e. the producers may be inserting items into the + channels concurrently with the consumer taking items out of them. Therefore, + enumerating this object can cause the current thread to block. + + We use a biased choice algorithm to choose from our consumer channels. I.e. we + will prefer to process elements in a fair round-robin fashion, but will + occassionally bypass this if a channel is empty. + + + + + + + Convenience class used by enumerators that merge many partitions into one. + + + + + + WaitAny simulates a Win32-style WaitAny on the set of thin-events. + + An array of thin-events (null elements permitted) + The index of the specific event in events that caused us to wake up. + + + + The default merge helper uses a set of straightforward algorithms for output + merging. Namely, for synchronous merges, the input data is yielded from the + input data streams in "depth first" left-to-right order. For asynchronous merges, + on the other hand, we use a biased choice algorithm to favor input channels in + a "fair" way. No order preservation is carried out by this helper. + + + + + + + Drives execution of an actual merge operation, including creating channel data + structures and scheduling parallel work as appropriate. The algorithms used + internally are parameterized based on the type of data in the partitions; e.g. + if an order preserved stream is found, the merge will automatically use an + order preserving merge, and so forth. + + + + + + The order preserving merge helper guarantees the output stream is in a specific order. This is done + by comparing keys from a set of already-sorted input partitions, and coalescing output data using + incremental key comparisons. + + + + + + + A merge helper that yields results in a streaming fashion, while still ensuring correct output + ordering. This merge only works if each producer task generates outputs in the correct order, + i.e. with an Increasing (or Correct) order index. + + The merge creates DOP producer tasks, each of which will be writing results into a separate + buffer. + + The consumer always waits until each producer buffer contains at least one element. If we don't + have one element from each producer, we cannot yield the next element. (If the order index is + Correct, or in some special cases with the Increasing order, we could yield sooner. The + current algorithm does not take advantage of this.) + + The consumer maintains a producer heap, and uses it to decide which producer should yield the next output + result. After yielding an element from a particular producer, the consumer will take another element + from the same producer. However, if the producer buffer exceeded a particular threshold, the consumer + will take the entire buffer, and give the producer an empty buffer to fill. + + Finally, if the producer notices that its buffer has exceeded an even greater threshold, it will + go to sleep and wait until the consumer takes the entire buffer. + + + + + The initial capacity of the buffer queue. The value was chosen experimentally. + + + + + If the consumer notices that the queue reached this limit, it will take the entire buffer from + the producer, instead of just popping off one result. The value was chosen experimentally. + + + + + If the producer notices that the queue reached this limit, it will go to sleep until woken up + by the consumer. Chosen experimentally. + + + + + Whether the producer is allowed to buffer up elements before handing a chunk to the consumer. + If false, the producer will make each result available to the consumer immediately after it is + produced. + + + + + Buffers for the results. Each buffer has elements added by one producer, and removed + by the consumer. + + + + + Whether each producer is done producing. Set to true by individual producers, read by consumer. + + + + + Whether a particular producer is waiting on the consumer. Read by the consumer, set to true + by producers, set to false by the consumer. + + + + + Whether the consumer is waiting on a particular producer. Read by producers, set to true + by consumer, set to false by producer. + + + + + Each object is a lock protecting the corresponding elements in m_buffers, m_producerDone, + m_producerWaiting and m_consumerWaiting. + + + + + A singleton instance of the comparer used by the producer heap. Eager allocation is OK + because if the static constructor runs, we will be using this merge. + + + + + A structure to represent a producer in the producer heap. + + + + + A comparer used by FixedMaxHeap(Of Producer) + + This comparer will be used by max-heap. We want the producer with the smallest MaxKey to + end up in the root of the heap. + + x.MaxKey GREATER_THAN y.MaxKey => x LESS_THAN y => return - + x.MaxKey EQUALS y.MaxKey => x EQUALS y => return 0 + x.MaxKey LESS_THAN y.MaxKey => x GREATER_THAN y => return + + + + + + Enumerator over the results of an order-preserving pipelining merge. + + + + + Merge helper associated with this enumerator + + + + + Heap used to efficiently locate the producer whose result should be consumed next. + For each producer, stores the order index for the next element to be yielded. + + Read and written by the consumer only. + + + + + Stores the next element to be yielded from each producer. We use a separate array + rather than storing this information in the producer heap to keep the Producer struct + small. + + Read and written by the consumer only. + + + + + A private buffer for the consumer. When the size of a producer buffer exceeds a threshold + (STEAL_BUFFER_SIZE), the consumer will take ownership of the entire buffer, and give the + producer a new empty buffer to place results into. + + Read and written by the consumer only. + + + + + Tracks whether MoveNext() has already been called previously. + + + + + Constructor + + + + + Moves the enumerator to the next result, or returns false if there are no more results to yield. + + + + + If the cancellation of the query has been initiated (because one or more producers + encountered exceptions, or because external cancellation token has been set), the method + will tear down the query and rethrow the exception. + + + + + Wait until a producer's buffer is non-empty, or until that producer is done. + + false if there is no element to yield because the producer is done, true otherwise + + + + Looks for an element from a particular producer in the consumer's private buffer. + + + + + Returns the current result + + + + + This enumerator merges multiple input channels into a single output stream. The merging process just + goes from left-to-right, enumerating each channel in succession in its entirety. + Assumptions: + Before enumerating this object, all producers for all channels must have finished enqueueing new + elements. + + + + + + This enumerator handles the actual coordination among partitions required to + accomplish the repartitioning operation, as explained above. + + The kind of elements. + The key used to distribute elements. + The kind of keys found in the source (ignored). + + + + A repartitioning stream must take input data that has already been partitioned and + redistribute its contents based on a new partitioning algorithm. This is accomplished + by making each partition p responsible for redistributing its input data to the + correct destination partition. Some input elements may remain in p, but many will now + belong to a different partition and will need to move. This requires a great deal of + synchronization, but allows threads to repartition data incrementally and in parallel. + Each partition will "pull" data on-demand instead of partitions "pushing" data, which + allows us to reduce some amount of synchronization overhead. + + We currently only offer one form of reparitioning via hashing. This used to be an + abstract base class, but we have eliminated that to get rid of some virtual calls on + hot code paths. Uses a key selection algorithm with mod'ding to determine destination. + + @TODO: @BUG#519: consider adding a bound to the buffers. Unfortunately this can quite easily + lead to deadlock when multiple repartitions are involved. Need a solution. + @TODO: @BUG#504: consider amortizing synchronization overhead by enqueueing/dequeueing in chunks + rather than single elements. Also need to be careful not to introduce deadlock. + + + + + + + + A partitioned stream just partitions some data source using an extensible + partitioning algorithm and exposes a set of N enumerators that are consumed by + their ordinal index [0..N). It is used to build up a set of streaming computations. + At instantiation time, the actual data source to be partitioned is supplied; and + then the caller will layer on top additional enumerators to represent phases in the + computation. Eventually, a merge can then schedule enumeration of all of the + individual partitions in parallel by obtaining references to the individual + partition streams. + + This type has a set of subclasses which implement different partitioning algorithms, + allowing us to easily plug in different partitioning techniques as needed. The type + supports wrapping IEnumerables and IEnumerators alike, with some preference for the + former as many partitioning algorithms are more intelligent for certain data types. + + + + + + + IPartitionedStreamRecipient is essentially a generic action on a partitioned stream, + whose generic type parameter is the type of the order keys in the partitioned stream. + + + + + + This enumerator handles the actual coordination among partitions required to + accomplish the repartitioning operation, as explained above. In addition to that, + it tracks order keys so that order preservation can flow through the enumerator. + + The kind of elements. + The key used to distribute elements. + The kind of keys found in the source. + + + + Contiguous range chunk partitioning attempts to improve data locality by keeping + data close together in the incoming data stream together in the outgoing partitions. + There are really three types of partitions that are used internally: + + 1. If the data source is indexable--like an array or List_T--we can actually + just compute the range indexes and avoid doing any copying whatsoever. Each + "partition" is just an enumerator that will walk some subset of the data. + 2. If the data source has an index (different than being indexable!), we can + turn this into a range scan of the index. We can roughly estimate distribution + and ensure an evenly balanced set of partitions. + @TODO: @BUG#516: we don't have indexes today. We are considering it for the future. + 3. If we can't use 1 or 2, we instead partition "on demand" by chunking the contents + of the source enumerator as they are requested. The unfortunate thing is that + this requires synchronization, since consumers may be running in parallel. We + amortize the cost of this by giving chunks of items when requested instead of + one element at a time. Note that this approach also works for infinite streams. + + In all cases, the caller can request that enumerators walk elements in striped + contiguous chunks. If striping is requested, then each partition j will yield elements + in the data source for which ((i / s)%p) == j, where i is the element's index, s is + a chunk size calculated by the system with the intent of aligning on cache lines, and + p is the number of partitions. If striping is not requested, we use the same algorith, + only, instead of aligning on cache lines, we use a chunk size of l / p, where l + is the length of the input and p is the number of partitions. + + Notes: + This is used as the default partitioning strategy by much of the PLINQ infrastructure. + + + + + + The aggregation operator is a little unique, in that the enumerators it returns + yield intermediate results instead of the final results. That's because there is + one last Aggregate operation that must occur in order to perform the final reduction + over the intermediate streams. In other words, the intermediate enumerators produced + by this operator are never seen by other query operators or consumers directly. + + An aggregation performs parallel prefixing internally. Given a binary operator O, + it will generate intermediate results by folding O across partitions; then it + performs a final reduction by folding O accross the intermediate results. The + analysis engine knows about associativity and commutativity, and will ensure the + style of partitioning inserted into the tree is compatable with the operator. + + For instance, say O is + (meaning it is AC), our input is {1,2,...,8}, and we + use 4 partitions to calculate the aggregation. Sequentially this would look + like this O(O(O(1,2),...),8), in other words ((1+2)+...)+8. The parallel prefix + of this (w/ 4 partitions) instead calculates the intermediate aggregations, i.e.: + t1 = O(1,2), t2 = O(3,4), ... t4 = O(7,8), aka t1 = 1+2, t2 = 3+4, t4 = 7+8. + The final step is to aggregate O over these intermediaries, i.e. + O(O(O(t1,t2),t3),t4), or ((t1+t2)+t3)+t4. This generalizes to any binary operator. + + Beause some aggregations use a different input, intermediate, and output types, + we support an even more generalized aggregation type. In this model, we have + three operators, an intermediate (used for the incremental aggregations), a + final (used for the final summary of intermediate results), and a result selector + (used to perform whatever transformation is needed on the final summary). + + + + + + + + The base class from which all binary query operators derive, that is, those that + have two child operators. This introduces some convenience methods for those + classes, as well as any state common to all subclasses. + + + + + + + This is the abstract base class for all query operators in the system. It + implements the ParallelQuery{T} type so that it can be bound as the source + of parallel queries and so that it can be returned as the result of parallel query + operations. Not much is in here, although it does serve as the "entry point" for + opening all query operators: it will lazily analyze and cache a plan the first + time the tree is opened, and will open the tree upon calls to GetEnumerator. + + Notes: + This class implements ParallelQuery so that any parallel query operator + can bind to the parallel query provider overloads. This allows us to string + together operators w/out the user always specifying AsParallel, e.g. + Select(Where(..., ...), ...), and so forth. + + + + + + The QueryResults{T} is a class representing the results of the query. There may + be different ways the query results can be manipulated. Currently, two ways are + supported: + + 1. Open the query results as a partitioned stream by calling GivePartitionedStream + and pass a generic action as an argument. + + 2. Access individual elements of the results list by calling GetElement(index) and + ElementsCount. This method of accessing the query results is available only if + IsIndexible return true. + + + + + + A QueryOperator that represents the output of the query partitioner.AsParallel(). + + + + + Determines the OrdinalIndexState for a partitioner + + + + + QueryResults for a PartitionerQueryOperator + + + + + Enumerator that converts an enumerator over key-value pairs exposed by a partitioner + to a QueryOperatorEnumerator used by PLINQ internally. + + + + + Enumerator that converts an enumerator over key-value pairs exposed by a partitioner + to a QueryOperatorEnumerator used by PLINQ internally. + + + + + A scan is just a simple operator that is positioned directly on top of some + real data source. It's really just a place holder used during execution and + analysis -- it should never actually get opened. + + + + + + Operator that yields the elements from the first data source that aren't in the second. + This is known as the set relative complement, i.e. left - right. + + + + + + The base class from which all binary query operators derive, that is, those that + have two child operators. This introduces some convenience methods for those + classes, as well as any state common to all subclasses. + + + + + + + + A group join operator takes a left query tree and a right query tree, and then yields + the matching elements between the two. This can be used for outer joins, i.e. those + where an outer element has no matching inner elements -- the result is just an empty + list. As with the join algorithm above, we currently use a hash join algorithm. + + + + + + + + + This enumerator implements the hash-join algorithm as noted earlier. + + Assumptions: + This enumerator type won't work properly at all if the analysis engine didn't + ensure a proper hash-partition. We expect inner and outer elements with equal + keys are ALWAYS in the same partition. If they aren't (e.g. if the analysis is + busted) we'll silently drop items on the floor. :( + + + This is the enumerator class for two operators: + - Join + - GroupJoin + + + + + + + + + + Operator that yields the intersection of two data sources. + + + + + + A join operator takes a left query tree and a right query tree, and then yields the + matching pairs between the two. LINQ supports equi-key-based joins. Hence, a key- + selection function for the left and right data types will yield keys of the same + type for both. We then merely have to match elements from the left with elements from + the right that have the same exact key. Note that this is an inner join. In other + words, outer elements with no matching inner elements do not appear in the output. + + @TODO: @BUG#528: Currently we implement only a hash-join algorithm. Furthermore, we always + choose the inner data source for the hash-table creation. There is room for + optimization and different algorithm choices eventually. + + Hash-joins work in two phases: + + (1) Building - we build a hash-table from one of the data sources. In the case + of this specific operator, the table is built from the hash-codes of + keys selected via the key selector function. Because elements may share + the same key, the table must support one-key-to-many-values. + (2) Probing - for each element in the data source not used for building, we + use its key to look into the hash-table. If we find elements under this + key, we just enumerate all of them, yielding them as join matches. + + Because hash-tables exhibit on average O(1) lookup, we turn what would have been + an O(n*m) algorithm -- in the case of nested loops joins -- into an O(n) algorithm. + We of course require some additional storage to do so, but in general this pays. + + + + + + + + + Operator that yields the union of two data sources. + + + + + + A Zip operator combines two input data sources into a single output stream, + using a pairwise element matching algorithm. For example, the result of zipping + two vectors a = {0, 1, 2, 3} and b = {9, 8, 7, 6} is the vector of pairs, + c = {(0,9), (1,8), (2,7), (3,6)}. Because the expectation is that each element + is matched with the element in the other data source at the same ordinal + position, the zip operator requires order preservation. + + + + + + + + Partitioned stream recipient that will merge the results. + + + + + A wrapper enumerator that just opens the query operator when MoveNext() is called for the + first time. We use QueryOpeningEnumerator to call QueryOperator.GetOpenedEnumerator() + lazily because once GetOpenedEnumerator() is called, PLINQ starts precomputing the + results of the query. + + + + + Opens the query and initializes m_openedQueryEnumerator and m_querySettings. + Called from the first MoveNext call. + + + + + An inlined count aggregation and its enumerator. + + + + + + This class is common to all of the "inlined" versions of various aggregations. The + inlined operators ensure that real MSIL instructions are used to perform elementary + operations versus general purpose delegate-based binary operators. For obvious reasons + this is a quite bit more efficient, although it does lead to a fair bit of unfortunate + code duplication. + + + + + + + + A class with some shared implementation between all aggregation enumerators. + + + + + + An inlined average aggregation operator and its enumerator, for decimals. + + + + + An inlined min/max aggregation and its enumerator, for decimals. + + + + + An inlined sum aggregation and its enumerator, for decimals. + + + + + An inlined average aggregation operator and its enumerator, for doubles. + + + + + An inlined min/max aggregation and its enumerator, for doubles. + + Notes: + Note that normally double.NaN < anything is false, as is anything < NaN. This would + lead to some strangeness in Min and Max, e.g. Min({ NaN, 5.0 } == NaN, yet + Min({ 5.0, NaN }) == 5.0! We impose a total ordering so that NaN is smaller than + everything, including -infinity, which is consistent with Comparer_T. + + + + + An inlined sum aggregation and its enumerator, for doubles. + + + + + An inlined average aggregation operator and its enumerator, for floats. + + + + + An inlined min/max aggregation and its enumerator, for floats. + + + + + An inlined sum aggregation and its enumerator, for floats. + + + + + An inlined average aggregation operator and its enumerator, for ints. + + + + + An inlined min/max aggregation and its enumerator, for ints. + + + + + Inlined aggregations for summing up primitives (int, long, float, double, decimal), as + well as the nullable versions of each (int?, long?, float?, double?, decimal?). + + + + + An inlined average aggregation operator and its enumerator, for longs. + + + + + An inlined count aggregation and its enumerator. + + + + + + An inlined min/max aggregation and its enumerator, for longs. + + + + + An inlined sum aggregation and its enumerator, for longs. + + + + + An inlined average aggregation operator and its enumerator, for Nullable decimals. + + + + + An inlined min/max aggregation and its enumerator, for Nullable decimals. + + + + + An inlined sum aggregation and its enumerator, for nullable decimals. + + + + + An inlined average aggregation operator and its enumerator, for Nullable doubles. + + + + + An inlined min/max aggregation and its enumerator, for Nullable{Double}s. + + Notes: + Note that normally double.NaN < anything is false, as is anything < NaN. This would + lead to some strangeness in Min and Max, e.g. Min({ NaN, 5.0 } == NaN, yet + Min({ 5.0, NaN }) == 5.0! We impose a total ordering so that NaN is smaller than + everything, including -infinity, which is consistent with Comparer_T. + + + + + An inlined sum aggregation and its enumerator, for nullable doubles. + + + + + An inlined average aggregation operator and its enumerator, for Nullable floats. + + + + + An inlined min/max aggregation and its enumerator, for Nullable floats. + + Notes: + Note that normally float.NaN < anything is false, as is anything < NaN. This would + lead to some strangeness in Min and Max, e.g. Min({ NaN, 5.0 } == NaN, yet + Min({ 5.0, NaN }) == 5.0! We impose a total ordering so that NaN is smaller than + everything, including -infinity, which is consistent with Comparer_T. + + + + + An inlined sum aggregation and its enumerator, for Nullable floats. + + + + + An inlined average aggregation operator and its enumerator, for Nullable ints. + + + + + An inlined min/max aggregation and its enumerator, for Nullable ints. + + + + + An inlined sum aggregation and its enumerator, for Nullable ints. + + + + + An inlined average aggregation operator and its enumerator, for Nullable longs. + + + + + An inlined min/max aggregation and its enumerator, for Nullable{Int64}s. + + + + + An inlined sum aggregation and its enumerator, for Nullable longs. + + + + + Class to represent an IList{T} as QueryResults{T} + + + + + + Describes the state of order preservation index associated with an enumerator. + + + + + This type contains query execution options specified by the user. + QuerySettings are used as follows: + - in the query construction phase, some settings may be uninitialized. + - at the start of the query opening phase, the WithDefaults method + is used to initialize all uninitialized settings. + - in the rest of the query opening phase, we assume that all settings + have been initialized. + + + + + Represents operators AsOrdered and AsUnordered. In the current implementation, it + simply turns on preservation globally in the query. + + + + + + Represents operators that set various query execution options. + + + + + + The any/all operators work the same way. They search for the occurrence of a predicate + value in the data source, and upon the first occurrence of such a value, yield a + particular value. Specifically: + + - Any returns true if the predicate for any element evaluates to true. + - All returns false if the predicate for any element evaluates to false. + + This uniformity is used to apply a general purpose algorithm. Both sentences above + take the form of "returns XXX if the predicate for any element evaluates to XXX." + Therefore, we just parameterize on XXX, called the qualifciation below, and if we + ever find an occurrence of XXX in the input data source, we also return XXX. Otherwise, + we return !XXX. Obviously, XXX in this case is a bool. + + This is a search algorithm. So once any single partition finds an element, it will + return so that execution can stop. This is done with a "cancelation" flag that is + polled by all parallel workers. The first worker to find an answer sets it, and all + other workers notice it and quit as quickly as possible. + + + + + + Concatenates one data source with another. Order preservation is used to ensure + the output is actually a concatenation -- i.e. one after the other. The only + special synchronization required is to find the largest index N in the first data + source so that the indices of elements in the second data source can be offset + by adding N+1. This makes it appear to the order preservation infrastructure as + though all elements in the second came after all elements in the first, which is + precisely what we want. + + + + + + Contains is quite similar to the any/all operator above. Each partition searches a + subset of elements for a match, and the first one to find a match signals to the rest + of the partititons to stop searching. + + + + + + This operator just exposes elements directly from the underlying data source, if + it's not empty, or yields a single default element if the data source is empty. + There is a minimal amount of synchronization at the beginning, until all partitions + have registered whether their stream is empty or not. Once the 0th partition knows + that at least one other partition is non-empty, it may proceed. Otherwise, it is + the 0th partition which yields the default value. + + + + + + This operator yields all of the distinct elements in a single data set. It works quite + like the above set operations, with the obvious difference being that it only accepts + a single data source as input. + + + + + + ElementAt just retrieves an element at a specific index. There is some cross-partition + coordination to force partitions to stop looking once a partition has found the + sought-after element. + + + + + + Executes the query, either sequentially or in parallel, depending on the query execution mode and + whether a premature merge was inserted by this ElementAt operator. + + result + withDefaultValue + whether an element with this index exists + + + + First tries to discover the first element in the source, optionally matching a + predicate. All partitions search in parallel, publish the lowest index for a + candidate match, and reach a barrier. Only the partition that "wins" the race, + i.e. who found the candidate with the smallest index, will yield an element. + + + + + + A forall operator just enables an action to be placed at the "top" of a query tree + instead of yielding an enumerator that some consumer can walk. We execute the + query for effect instead of yielding a data result. + + + + + + The operator type for GroupBy statements. This operator groups the input based on + a key-selection routine, yielding one-to-many values of key-to-elements. The + implementation is very much like the hash join operator, in which we first build + a big hashtable of the input; then we just iterate over each unique key in the + hashtable, yielding it plus all of the elements with the same key. + + + + + + + + An ordered version of the grouping data structure. Represents an ordered group of elements that + have the same grouping key. + + + + + Constructs a new grouping + + + + + Add an element + + + + + No more elements will be added, so we can sort the group now. + + + + + The key this grouping represents. + + + + + A variant of the Select operator that supplies element index while performing the + projection operation. This requires cooperation with partitioning and merging to + guarantee ordering is preserved. + + @TODO: @PERF: @BUG#527: as an optimization, we strictly don't need order to be preserved + all the way until the merge. If ordering is only kept for THIS operator, we + can subsequently get rid of order preservation after executing. + + + + + + + A variant of the Where operator that supplies element index while performing the + filtering operation. This requires cooperation with partitioning and merging to + guarantee ordering is preserved. + + @TODO: @PERF: @BUG#527: as an optimization, we strictly don't need order to be preserved + all the way until the merge. If ordering is only kept for THIS operator, we + can subsequently get rid of order preservation after executing. + + + + + + Last tries to discover the last element in the source, optionally matching a + predicate. All partitions search in parallel, publish the greatest index for a + candidate match, and reach a barrier. Only the partition that "wins" the race, + i.e. who found the candidate with the largest index, will yield an element. + + @TODO: @PERF: @BUG#414: this traverses the data source in forward-order. In the future, we + will want to traverse in reverse order, since this allows partitions to stop + the search sooner (by watching if the current index passes below the current best). + + + + + + + Reverse imposes ordinal order preservation. There are normally two phases to this + operator's execution. Each partition first builds a buffer containing all of its + elements, and then proceeds to yielding the elements in reverse. There is a + 'barrier' (but not a blocking barrier) in between these two steps, at which point the largest index becomes + known. This is necessary so that when elements from the buffer are yielded, the + CurrentIndex can be reported as the largest index minus the original index (thereby + reversing the indices as well as the elements themselves). If the largest index is + known a priori, because we have an array for example, we can avoid the barrier in + between the steps. + + + + + + SelectMany is effectively a nested loops join. It is given two data sources, an + outer and an inner -- actually, the inner is sometimes calculated by invoking a + function for each outer element -- and we walk the outer, walking the entire + inner enumerator for each outer element. There is an optional result selector + function which can transform the output before yielding it as a result element. + + Notes: + Although select many takes two enumerable objects as input, it appears to the + query analysis infrastructure as a unary operator. That's because it works a + little differently than the other binary operators: it has to re-open the right + child every time an outer element is walked. The right child is NOT partitioned. + + + + + + + + A helper method for WrapPartitionedStream. We use the helper to reuse a block of code twice, but with + a different order key type. (If premature merge occured, the order key type will be "int". Otherwise, + it will be the same type as "TLeftKey" in WrapPartitionedStream.) + + + + + Similar helper method to WrapPartitionedStreamNotIndexed, except that this one is for the indexed variant + of SelectMany (i.e., the SelectMany that passes indices into the user sequence-generating delegate) + + + + + The operator type for Select statements. This operator transforms elements as it + enumerates them through the use of a selector delegate. + + + + + + + Single searches the input to find the sole element that satisfies the (optional) + predicate. If multiple such elements are found, the caller is responsible for + producing an error. There is some degree of cross-partition synchronization to + proactively hault the search if we ever determine there are multiple elements + satisfying the search in the input. + + + + + + The query operator for OrderBy and ThenBy. + + + + + + + Take and Skip either take or skip a specified number of elements, captured in the + count argument. These will work a little bit like TakeWhile and SkipWhile: there + are two phases, (1) Search and (2) Yield. In the search phase, our goal is to + find the 'count'th index from the input. We do this in parallel by sharing a count- + sized array. Each thread races to populate the array with indices in ascending + order. This requires synchronization for inserts. We use a simple heap, for decent + worst case performance. After a thread has scanned ‘count’ elements, or its current + index is greater than or equal to the maximum index in the array (and the array is + fully populated), the thread can stop searching. All threads issue a barrier before + moving to the Yield phase. When the Yield phase is entered, the count-1th element + of the array contains: in the case of Take, the maximum index (exclusive) to be + returned; or in the case of Skip, the minimum index (inclusive) to be returned. The + Yield phase simply consists of yielding these elements as output. + + + + + + Determines the order index state for the output operator + + + + + Take- and SkipWhile work similarly. Execution is broken into two phases: Search + and Yield. + + During the Search phase, many partitions at once search for the first occurrence + of a false element. As they search, any time a partition finds a false element + whose index is lesser than the current lowest-known false element, the new index + will be published, so other partitions can stop the search. The search stops + as soon as (1) a partition exhausts its input, (2) the predicate yields false for + one of the partition's elements, or (3) its input index passes the current lowest- + known index (sufficient since a given partition's indices are always strictly + incrementing -- asserted below). Elements are buffered during this process. + + Partitions use a barrier after Search and before moving on to Yield. Once all + have passed the barrier, Yielding begins. At this point, the lowest-known false + index will be accurate for the entire set, since all partitions have finished + scanning. This is where TakeWhile and SkipWhile differ. TakeWhile will start at + the beginning of its buffer and yield all elements whose indices are less than + the lowest-known false index. SkipWhile, on the other hand, will skipp any such + elements in the buffer, yielding those whose index is greater than or equal to + the lowest-known false index, and then finish yielding any remaining elements in + its data source (since it may have stopped prematurely due to (3) above). + + + + + + Determines the order index state for the output operator + + + + + The operator type for Where statements. This operator filters out elements that + don't match a filter function (supplied at instantiation time). + + + + + + Poll frequency (number of loops per cancellation check) for situations where per-1-loop testing is too high an overhead. + + + + + Throws an OCE if the merged token has been canceled. + + A token to check for cancelation. + + + + A spooling task handles marshaling data from a producer to a consumer. It simply + takes data from a producer and hands it off to a consumer. This class is the base + class from which other concrete spooling tasks derive, encapsulating some common + logic (such as capturing exceptions). + + + + + Simple abstract task representation, allowing either synchronous and asynchronous + execution. Subclasses override the Work API to implement the logic. + + + + + The number of elements to accumulate on the producer before copying the elements to the + producer-consumer buffer. This constant is only used in the AutoBuffered mode. + + Experimentally, 16 appears to be sufficient buffer size to compensate for the synchronization + cost. + + + + + Whether the producer is allowed to buffer up elements before handing a chunk to the consumer. + If false, the producer will make each result available to the consumer immediately after it is + produced. + + + + + Constructor + + + + + This method is responsible for enumerating results and enqueueing them to + the output buffer as appropriate. Each base class implements its own. + + + + + Creates and begins execution of a new set of spooling tasks. + + + + + Dispose the underlying enumerator and wake up the consumer if necessary. + + + + + A spooling task handles marshaling data from a producer to a consumer. It's given + a single enumerator object that contains all of the production algorithms, a single + destination channel from which consumers draw results, and (optionally) a + synchronization primitive using which to notify asynchronous consumers. This + particular task variant preserves sort order in the final data. + + + + + + + A collection of tasks used by a single query instance. This type also offers some + convenient methods for tracing significant ETW events, waiting on tasks, propagating + exceptions, and performing cancellation activities. + + + + + A factory class to execute spooling logic. + + + + + A spooling task handles marshaling data from a producer to a consumer. It's given + a single enumerator object that contains all of the production algorithms, a single + destination channel from which consumers draw results, and (optionally) a + synchronization primitive using which to notify asynchronous consumers. + + + + + + + A spooling task handles marshaling data from a producer to a consumer. It's given + a single enumerator object that contains all of the production algorithms, a single + destination channel from which consumers draw results, and (optionally) a + synchronization primitive using which to notify asynchronous consumers. + + + + + + + A spooling task handles marshaling data from a producer to a consumer. It's given + a single enumerator object that contains all of the production algorithms, a single + destination channel from which consumers draw results, and (optionally) a + synchronization primitive using which to notify asynchronous consumers. + + + + + + + Wraps an enumerable with a cancellation checker. The enumerator handed out by the source enumerable + will be wrapped by an object that periodically checks whether a particular cancellation token has + been cancelled. If so, the next call to MoveNext() will throw an OperationCancelledException. + + + + + WrapEnumerable.ExceptionAggregator wraps the enumerable with another enumerator that will + catch exceptions, and wrap each with an AggregateException. + + If PLINQ decides to execute a query sequentially, we will reuse LINQ-to-objects + implementations for the different operators. However, we still need to throw + AggregateException in the cases when parallel execution would have thrown an + AggregateException. Thus, we introduce a wrapper enumerator that catches exceptions + and wraps them with an AggregateException. + + + + + A variant of WrapEnumerable that accepts a QueryOperatorEnumerator{,} instead of an IEnumerable{}. + The code duplication is necessary to avoid extra virtual method calls that would otherwise be needed to + convert the QueryOperatorEnumerator{,} to an IEnumerator{}. + + + + + Accepts an exception, wraps it as if it was crossing the parallel->sequential boundary, and throws the + wrapped exception. In sequential fallback cases, we use this method to throw exceptions that are consistent + with exceptions thrown by PLINQ when the query is executed by worker tasks. + + The exception will be wrapped into an AggregateException, except for the case when the query is being + legitimately cancelled, in which case we will propagate the CancellationException with the appropriate + token. + + + + + Wraps a function with a try/catch that morphs all exceptions into AggregateException. + + The input argument type. + The return value type. + A function to use internally. + The cancellation state to use. + A new function containing exception wrapping logic. + + + + ExchangeUtilities is a static class that contains helper functions to partition and merge + streams. + + + + + Used during hash partitioning, when the keys being memoized are not used for anything. + + + + + Very simple heap data structure, of fixed size. + + + + + + A growing array. Unlike List{T}, it makes the internal array available to its user. + + + + + + A simple hash map data structure, derived from the LINQ set we also use. + + The kind of keys contained within. + The kind of values contained within. + + + + A linked list of array chunks. Allows direct access to its arrays. + + The elements held within. + + + + Allocates a new root chunk of a particular size. + + + + + Adds an element to this chunk. Only ever called on the root. + + The new element. + + + + Fetches an enumerator to walk the elements in all chunks rooted from this one. + + + + + The next chunk in the linked chain. + + + + + The number of elements contained within this particular chunk. + + + + + Lookup class implements the ILookup interface. Lookup is very similar to a dictionary + except multiple values are allowed to map to the same key, and null keys are supported. + + Support for null keys adds an issue because the Dictionary class Lookup uses for + storage does not support null keys. So, we need to treat null keys separately. + Unfortunately, since TKey may be a value type, we cannot test whether the key is null + using the user-specified equality comparer. + + C# does allow us to compare the key against null using the == operator, but there is a + possibility that the user's equality comparer considers null to be equal to other values. + Now, MSDN documentation specifies that if IEqualityComparer.Equals(x,y) returns true, it + must be the case that x and y have the same hash code, and null has no hash code. Despite + that, we might as well support the use case, even if it is bad practice. + + The solution the Lookup class uses is to treat the key default(TKey) as a special case, + and hold its associated grouping - if any - in a special field instead of inserting it + into a dictionary. + + + + + + + A pair just wraps two bits of data into a single addressable unit. This is a + value type to ensure it remains very lightweight, since it is frequently used + with other primitive data types as well. + + + + + + + PairComparer compares pairs by the first element, and breaks ties by the second + element. + + + + + + + Comparer that wraps another comparer, and flips the result of each comparison to the + opposite answer. + + + + + + A set for various operations. Shamelessly stolen from LINQ's source code. + @TODO: can the Linq one be used directly now that we are in System.Core + + The kind of elements contained within. + + + + A very simple primitive that allows us to share a value across multiple threads. + + + + + + Common miscellaneous utility methods used throughout the code-base. + + + + + A struct to wrap any arbitrary object reference or struct. Used for situations + where we can't tolerate null values (like keys for hashtables). + + + + + + Compares two wrapped structs of the same underlying type for equality. Simply + wraps the actual comparer for the type being wrapped. + + + + + + Represents a sorted, parallel sequence. + + + + + Returns an enumerator that iterates through the sequence. + + An enumerator that iterates through the sequence. + + + + The query execution mode is a hint that specifies how the system should handle + performance trade-offs when parallelizing queries. + + + + + By default, the system will use algorithms for queries + that are ripe for parallelism and will avoid algorithms with high + overheads that will likely result in slow downs for parallel execution. + + + + + Parallelize the entire query, even if that means using high-overhead algorithms. + + + + + Provides a set of static (Shared in Visual Basic) methods for working with specific kinds of + instances. + + + + + Creates a proxy Task that represents the + asynchronous operation of a Task{Task}. + + + It is often useful to be able to return a Task from a + Task{TResult}, where the inner Task represents work done as part of the outer Task{TResult}. However, + doing so results in a Task{Task}, which, if not dealt with carefully, could produce unexpected behavior. Unwrap + solves this problem by creating a proxy Task that represents the entire asynchronous operation of such a Task{Task}. + + The Task{Task} to unwrap. + The exception that is thrown if the + argument is null. + A Task that represents the asynchronous operation of the provided Task{Task}. + + + + Creates a proxy Task{TResult} that represents the + asynchronous operation of a Task{Task{TResult}}. + + + It is often useful to be able to return a Task{TResult} from a Task{TResult}, where the inner Task{TResult} + represents work done as part of the outer Task{TResult}. However, doing so results in a Task{Task{TResult}}, + which, if not dealt with carefully, could produce unexpected behavior. Unwrap solves this problem by + creating a proxy Task{TResult} that represents the entire asynchronous operation of such a Task{Task{TResult}}. + + The Task{Task{TResult}} to unwrap. + The exception that is thrown if the + argument is null. + A Task{TResult} that represents the asynchronous operation of the provided Task{Task{TResult}}. /// Unwraps a Task that returns another Task. + + + From bda0243c122d6da773a0e9703a43b51970c11c9f Mon Sep 17 00:00:00 2001 From: jeffreypriebe Date: Sun, 16 Nov 2014 15:18:59 -0800 Subject: [PATCH 3/8] Project built for .net 3.5 No functionality difference from current master. Additional Dependency of System.Threading 1.0.2856.0 .net 3.5 compatibility: - Changed projects to build to .net 3.5 - Added reference to local source Lucene 2.9.2.2 - Added reference to System.Threading 1.0.2856.0 (for ConcurrentQueue object) - Changed Lucene constants requested from LUCENE_30 to LUCENE_29 - Changed APIs where they had changed in 3.0 -- use of .Close() instead of .Dispose() -- Occur.Must location change (inside BooleanClause) -- TopDocs capitalization changes Cleanup: - Removed nuget references to .net 4.0 lucenes (2.9.4.1 & 3.0.3 in Tests, SharpZipLib [Lucene 2.9.4.1 dependency]) --- src/SimpleLucene.Tests/MemoryIndexWriter.cs | 2 +- .../SimpleLucene.Tests.csproj | 195 +++++++++--------- src/SimpleLucene.Tests/packages.config | 9 +- src/SimpleLucene/DirectoryIndexWriter.cs | 2 +- src/SimpleLucene/IndexOptions.cs | 2 +- src/SimpleLucene/IndexService.cs | 4 +- src/SimpleLucene/Properties/AssemblyInfo.cs | 8 +- src/SimpleLucene/QueryBase.cs | 10 +- src/SimpleLucene/SearchService.cs | 6 +- src/SimpleLucene/SimpleLucene.csproj | 178 ++++++++-------- src/SimpleLucene/packages.config | 5 - 11 files changed, 204 insertions(+), 217 deletions(-) delete mode 100644 src/SimpleLucene/packages.config diff --git a/src/SimpleLucene.Tests/MemoryIndexWriter.cs b/src/SimpleLucene.Tests/MemoryIndexWriter.cs index b7d3b60..da4315f 100644 --- a/src/SimpleLucene.Tests/MemoryIndexWriter.cs +++ b/src/SimpleLucene.Tests/MemoryIndexWriter.cs @@ -29,7 +29,7 @@ public IndexWriter Create() var ramDirectory = new RAMDirectory(); this.Directory = ramDirectory; return new IndexWriter(ramDirectory, - new StandardAnalyzer(Lucene.Net.Util.Version.LUCENE_30), + new StandardAnalyzer(Lucene.Net.Util.Version.LUCENE_29), CreateIndex, IndexWriter.MaxFieldLength.UNLIMITED); } diff --git a/src/SimpleLucene.Tests/SimpleLucene.Tests.csproj b/src/SimpleLucene.Tests/SimpleLucene.Tests.csproj index 6bdd206..de53813 100644 --- a/src/SimpleLucene.Tests/SimpleLucene.Tests.csproj +++ b/src/SimpleLucene.Tests/SimpleLucene.Tests.csproj @@ -1,105 +1,104 @@ - - - - Debug - AnyCPU - 8.0.30703 - 2.0 - {C9FF8CA5-7D30-44A6-9D26-20F2C5213251} - Library - Properties - SimpleLucene.Tests - SimpleLucene.Tests - v4.0 - 512 - ..\ - true - - - true - full - false - bin\Debug\ - DEBUG;TRACE - prompt - 4 - - - pdbonly - true - bin\Release\ - TRACE - prompt - 4 - - - - False - ..\packages\SharpZipLib.0.86.0\lib\20\ICSharpCode.SharpZipLib.dll - - - False - ..\packages\Lucene.Net.3.0.3\lib\NET40\Lucene.Net.dll - - - False - ..\packages\NUnit.2.5.9.10348\lib\nunit.framework.dll - - - False - ..\packages\NUnit.2.5.9.10348\lib\nunit.mocks.dll - - - False - ..\packages\NUnit.2.5.9.10348\lib\pnunit.framework.dll - - - - - - - - - - - - - - - - - - - - - - - - - - - - - {72761871-5706-4ADD-A464-8935CC45FC57} - SimpleLucene - - - - - - - - - - This project references NuGet package(s) that are missing on this computer. Enable NuGet Package Restore to download them. For more information, see http://go.microsoft.com/fwlink/?LinkID=322105. The missing file is {0}. - - - + + + + Debug + AnyCPU + 8.0.30703 + 2.0 + {C9FF8CA5-7D30-44A6-9D26-20F2C5213251} + Library + Properties + SimpleLucene.Tests + SimpleLucene.Tests + v3.5 + 512 + ..\ + true + + + + true + full + false + bin\Debug\ + DEBUG;TRACE + prompt + 4 + + + pdbonly + true + bin\Release\ + TRACE + prompt + 4 + + + + False + ..\packages-legacy\Lucene.Net.2.9.2.2\Lucene.Net.dll + + + False + ..\packages\NUnit.2.5.9.10348\lib\nunit.framework.dll + + + False + ..\packages\NUnit.2.5.9.10348\lib\nunit.mocks.dll + + + False + ..\packages\NUnit.2.5.9.10348\lib\pnunit.framework.dll + + + + + + + + + + + + + + + + + + + + + + + + + + + + {72761871-5706-4ADD-A464-8935CC45FC57} + SimpleLucene + + + + + + + + + + + + + This project references NuGet package(s) that are missing on this computer. Enable NuGet Package Restore to download them. For more information, see http://go.microsoft.com/fwlink/?LinkID=322105. The missing file is {0}. + + + + --> \ No newline at end of file diff --git a/src/SimpleLucene.Tests/packages.config b/src/SimpleLucene.Tests/packages.config index d3d22e4..77562db 100644 --- a/src/SimpleLucene.Tests/packages.config +++ b/src/SimpleLucene.Tests/packages.config @@ -1,7 +1,4 @@ - - - - - - + + + \ No newline at end of file diff --git a/src/SimpleLucene/DirectoryIndexWriter.cs b/src/SimpleLucene/DirectoryIndexWriter.cs index 8da5bd6..501be80 100644 --- a/src/SimpleLucene/DirectoryIndexWriter.cs +++ b/src/SimpleLucene/DirectoryIndexWriter.cs @@ -15,7 +15,7 @@ public class DirectoryIndexWriter : IIndexWriter public IndexOptions IndexOptions { get; set; } public DirectoryIndexWriter(DirectoryInfo indexLocation, bool recreateIndex = false) - : this(indexLocation, new StandardAnalyzer(Lucene.Net.Util.Version.LUCENE_30), recreateIndex) + : this(indexLocation, new StandardAnalyzer(Lucene.Net.Util.Version.LUCENE_29), recreateIndex) { } public DirectoryIndexWriter(DirectoryInfo indexLocation, Analyzer analyzer, bool recreateIndex = false) diff --git a/src/SimpleLucene/IndexOptions.cs b/src/SimpleLucene/IndexOptions.cs index 06edf91..ee3b163 100644 --- a/src/SimpleLucene/IndexOptions.cs +++ b/src/SimpleLucene/IndexOptions.cs @@ -12,7 +12,7 @@ public class IndexOptions : IEquatable { public IndexOptions() { - this.Analyzer = new StandardAnalyzer(Lucene.Net.Util.Version.LUCENE_30); + this.Analyzer = new StandardAnalyzer(Lucene.Net.Util.Version.LUCENE_29); this.Attributes = new Dictionary(); } diff --git a/src/SimpleLucene/IndexService.cs b/src/SimpleLucene/IndexService.cs index f3a3ae6..5e57db9 100644 --- a/src/SimpleLucene/IndexService.cs +++ b/src/SimpleLucene/IndexService.cs @@ -104,8 +104,8 @@ public void Dispose() if (indexWriter.IndexOptions.OptimizeIndex) luceneWriter.Optimize(); - luceneWriter.Commit(); - luceneWriter.Dispose(); + luceneWriter.Commit(); + luceneWriter.Close(); isDisposed = true; } luceneWriter = null; diff --git a/src/SimpleLucene/Properties/AssemblyInfo.cs b/src/SimpleLucene/Properties/AssemblyInfo.cs index ce563c1..c68efa9 100644 --- a/src/SimpleLucene/Properties/AssemblyInfo.cs +++ b/src/SimpleLucene/Properties/AssemblyInfo.cs @@ -5,7 +5,7 @@ // General Information about an assembly is controlled through the following // set of attributes. Change these attribute values to modify the information // associated with an assembly. -[assembly: AssemblyTitle("SimpleLucene")] +[assembly: AssemblyTitle("SimpleLucene - v3.5")] [assembly: AssemblyDescription("SimpleLucene is a wrapper for the popular Lucene.NET search engine.")] [assembly: AssemblyConfiguration("")] [assembly: AssemblyCompany("Ben Foster")] @@ -32,6 +32,6 @@ // You can specify all the values or you can default the Build and Revision Numbers // by using the '*' as shown below: // [assembly: AssemblyVersion("1.0.*")] -[assembly: AssemblyVersion("1.0.0.2")] -[assembly: AssemblyFileVersion("1.0.0.2")] -[assembly: AssemblyInformationalVersion("1.0.0.2")] +[assembly: AssemblyVersion("1.0.0.15")] +[assembly: AssemblyFileVersion("1.0.0.15")] +[assembly: AssemblyInformationalVersion("1.0.0.15")] diff --git a/src/SimpleLucene/QueryBase.cs b/src/SimpleLucene/QueryBase.cs index 9e7e587..72b538b 100644 --- a/src/SimpleLucene/QueryBase.cs +++ b/src/SimpleLucene/QueryBase.cs @@ -26,10 +26,10 @@ public Query Query protected void AddQuery(Query query) { - AddQuery(query, Occur.MUST); - } - - protected void AddQuery(Query query, Occur occur) + AddQuery(query, BooleanClause.Occur.MUST); + } + + protected void AddQuery(Query query, BooleanClause.Occur occur) { if (query != null) { @@ -49,7 +49,7 @@ protected Query GetQueryFromList(IList list, Func key, Func SearchIndex(Query query, IResultDefinition definiti var searcher = this.GetSearcher(); TopDocs hits = null; hits = searcher.Search(query, 25000); - var results = hits.ScoreDocs.Select(h => searcher.Doc(h.Doc)); + var results = hits.scoreDocs.Select(h => searcher.Doc(h.doc)); return new SearchResult(results, definition); } public void Dispose() { if (!isDisposed && luceneSearcher != null) - { - luceneSearcher.Dispose(); + { + luceneSearcher.Close(); } luceneSearcher = null; } diff --git a/src/SimpleLucene/SimpleLucene.csproj b/src/SimpleLucene/SimpleLucene.csproj index 60fa1a3..e4d6717 100644 --- a/src/SimpleLucene/SimpleLucene.csproj +++ b/src/SimpleLucene/SimpleLucene.csproj @@ -1,98 +1,94 @@ - - - - Debug - AnyCPU - 8.0.30703 - 2.0 - {72761871-5706-4ADD-A464-8935CC45FC57} - Library - Properties - SimpleLucene - SimpleLucene - v4.0 - 512 - ..\ - true - - - true - full - false - bin\Debug\ - DEBUG;TRACE - prompt - 4 - - - pdbonly - true - bin\Release\ - TRACE - prompt - 4 - - - - False - ..\packages\SharpZipLib.0.86.0\lib\20\ICSharpCode.SharpZipLib.dll - - - False - ..\packages\Lucene.Net.3.0.3\lib\NET40\Lucene.Net.dll - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - This project references NuGet package(s) that are missing on this computer. Enable NuGet Package Restore to download them. For more information, see http://go.microsoft.com/fwlink/?LinkID=322105. The missing file is {0}. - - - + + + + Debug + AnyCPU + 8.0.30703 + 2.0 + {72761871-5706-4ADD-A464-8935CC45FC57} + Library + Properties + SimpleLucene + SimpleLucene + v3.5 + 512 + ..\ + true + + + + true + full + false + bin\Debug\ + DEBUG;TRACE + prompt + 4 + + + pdbonly + true + bin\Release\ + TRACE + prompt + 4 + + + + False + ..\packages-legacy\Lucene.Net.2.9.2.2\Lucene.Net.dll + + + + + ..\packages-legacy\System.Threading.1.0.2856.0\System.Threading.dll + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + This project references NuGet package(s) that are missing on this computer. Enable NuGet Package Restore to download them. For more information, see http://go.microsoft.com/fwlink/?LinkID=322105. The missing file is {0}. + + + + --> \ No newline at end of file diff --git a/src/SimpleLucene/packages.config b/src/SimpleLucene/packages.config deleted file mode 100644 index 6cd3049..0000000 --- a/src/SimpleLucene/packages.config +++ /dev/null @@ -1,5 +0,0 @@ - - - - - \ No newline at end of file From c2faa768b16aedc21ffb6f10b814c7fba4a386e2 Mon Sep 17 00:00:00 2001 From: Jeffrey Date: Sun, 16 Nov 2014 23:08:47 -0800 Subject: [PATCH 4/8] Filter and Sort options available on Search Added SearchIndex(Query query, IResultDefinition definition, Filter filter, Sort sort) Added Tests --- .../SearchServiceTestFixture.cs | 21 +++++++++++++++++++ src/SimpleLucene/ISearchService.cs | 3 ++- src/SimpleLucene/Properties/AssemblyInfo.cs | 6 +++--- src/SimpleLucene/SearchService.cs | 20 +++++++++++++++++- 4 files changed, 45 insertions(+), 5 deletions(-) diff --git a/src/SimpleLucene.Tests/SearchServiceTestFixture.cs b/src/SimpleLucene.Tests/SearchServiceTestFixture.cs index 648d90a..0697e17 100644 --- a/src/SimpleLucene.Tests/SearchServiceTestFixture.cs +++ b/src/SimpleLucene.Tests/SearchServiceTestFixture.cs @@ -74,6 +74,27 @@ public void Can_transform_results_with_delegate_definition() Assert.AreEqual(result.Results.Count(), 1); Assert.AreEqual(result.Results.First().Name, "Football"); + } + + [Test] + public void Can_filter_and_sort_index() + { + var indexSearcher = new MemoryIndexSearcher(directory, true); + var searchService = new SearchService(indexSearcher); + + var result = searchService.SearchIndex( + new TermQuery(new Term("type", "product")), + new ProductResultDefinition(), + new PrefixFilter(new Term("name", "f")), + new Sort(new SortField("id", SortField.INT, true)) + ); + + var repo = new Repository(); + + //Filtered: + Assert.AreEqual(2, result.Documents.Count()); + //Sorted: + Assert.AreEqual(repo.Products.First(p => p.Id == 7).Id, result.Results.ElementAt(0).Id); } } } diff --git a/src/SimpleLucene/ISearchService.cs b/src/SimpleLucene/ISearchService.cs index 6fa1ca9..6a4c9cc 100644 --- a/src/SimpleLucene/ISearchService.cs +++ b/src/SimpleLucene/ISearchService.cs @@ -6,6 +6,7 @@ namespace SimpleLucene public interface ISearchService : IDisposable { SearchResult SearchIndex(Query query); - SearchResult SearchIndex(Query query, IResultDefinition definition); + SearchResult SearchIndex(Query query, IResultDefinition definition); + SearchResult SearchIndex(Query query, IResultDefinition definition, Filter filter, Sort sort); } } diff --git a/src/SimpleLucene/Properties/AssemblyInfo.cs b/src/SimpleLucene/Properties/AssemblyInfo.cs index c68efa9..821a6ff 100644 --- a/src/SimpleLucene/Properties/AssemblyInfo.cs +++ b/src/SimpleLucene/Properties/AssemblyInfo.cs @@ -32,6 +32,6 @@ // You can specify all the values or you can default the Build and Revision Numbers // by using the '*' as shown below: // [assembly: AssemblyVersion("1.0.*")] -[assembly: AssemblyVersion("1.0.0.15")] -[assembly: AssemblyFileVersion("1.0.0.15")] -[assembly: AssemblyInformationalVersion("1.0.0.15")] +[assembly: AssemblyVersion("1.0.0.16")] +[assembly: AssemblyFileVersion("1.0.0.16")] +[assembly: AssemblyInformationalVersion("1.0.0.16")] diff --git a/src/SimpleLucene/SearchService.cs b/src/SimpleLucene/SearchService.cs index 782785a..3e5ce50 100644 --- a/src/SimpleLucene/SearchService.cs +++ b/src/SimpleLucene/SearchService.cs @@ -45,9 +45,27 @@ public SearchResult SearchIndex(Query query, IResultDefinition definiti { var searcher = this.GetSearcher(); TopDocs hits = null; - hits = searcher.Search(query, 25000); + hits = searcher.Search(query, 25000); var results = hits.scoreDocs.Select(h => searcher.Doc(h.doc)); return new SearchResult(results, definition); + } + + /// + /// Searches an index using the provided query and returns a strongly typed result object + /// + /// The type of result object to return + /// A Lucene query to use for the search + /// A search definition used to transform the returned Lucene documents + /// A filter used in the search + /// A sort used in the search + /// A search result object containing both Lucene documents and typed objects based on the definition + public SearchResult SearchIndex(Query query, IResultDefinition definition, Filter filter, Sort sort) + { + var searcher = this.GetSearcher(); + TopDocs hits = null; + hits = searcher.Search(query, filter, 25000, sort); + var results = hits.scoreDocs.Select(h => searcher.Doc(h.doc)); + return new SearchResult(results, definition); } public void Dispose() From e2cb7ad09c624bc538c38404abf5a7a16a2660b7 Mon Sep 17 00:00:00 2001 From: Jeffrey Date: Mon, 17 Nov 2014 19:55:58 -0800 Subject: [PATCH 5/8] Re-adding to NET35 branch Added Max number of results to searching. Added test --- .../SearchServiceTestFixture.cs | 24 +++++++++++++++++++ src/SimpleLucene/ISearchService.cs | 2 +- src/SimpleLucene/SearchService.cs | 5 ++-- 3 files changed, 28 insertions(+), 3 deletions(-) diff --git a/src/SimpleLucene.Tests/SearchServiceTestFixture.cs b/src/SimpleLucene.Tests/SearchServiceTestFixture.cs index 0697e17..df96751 100644 --- a/src/SimpleLucene.Tests/SearchServiceTestFixture.cs +++ b/src/SimpleLucene.Tests/SearchServiceTestFixture.cs @@ -95,6 +95,30 @@ public void Can_filter_and_sort_index() Assert.AreEqual(2, result.Documents.Count()); //Sorted: Assert.AreEqual(repo.Products.First(p => p.Id == 7).Id, result.Results.ElementAt(0).Id); + } + + [Test] + public void Can_return_limited_number() + { + var indexSearcher = new MemoryIndexSearcher(directory, true); + var searchService = new SearchService(indexSearcher); + + var numberResult = 1; + + var result = searchService.SearchIndex( + new TermQuery(new Term("type", "product")), + new ProductResultDefinition(), + new PrefixFilter(new Term("name", "f")), + new Sort(new SortField("id", SortField.INT, true)), + numberResult + ); + + var repo = new Repository(); + + //Filtered: + Assert.AreEqual(numberResult, result.Documents.Count()); + //Sorted: + Assert.AreEqual(repo.Products.First(p => p.Id == 7).Id, result.Results.ElementAt(0).Id); } } } diff --git a/src/SimpleLucene/ISearchService.cs b/src/SimpleLucene/ISearchService.cs index 6a4c9cc..770ea9f 100644 --- a/src/SimpleLucene/ISearchService.cs +++ b/src/SimpleLucene/ISearchService.cs @@ -7,6 +7,6 @@ public interface ISearchService : IDisposable { SearchResult SearchIndex(Query query); SearchResult SearchIndex(Query query, IResultDefinition definition); - SearchResult SearchIndex(Query query, IResultDefinition definition, Filter filter, Sort sort); + SearchResult SearchIndex(Query query, IResultDefinition definition, Filter filter, Sort sort, int maxNumberOfResults); } } diff --git a/src/SimpleLucene/SearchService.cs b/src/SimpleLucene/SearchService.cs index 3e5ce50..9dc5f37 100644 --- a/src/SimpleLucene/SearchService.cs +++ b/src/SimpleLucene/SearchService.cs @@ -58,12 +58,13 @@ public SearchResult SearchIndex(Query query, IResultDefinition definiti /// A search definition used to transform the returned Lucene documents /// A filter used in the search /// A sort used in the search + /// The maximum number of results to return /// A search result object containing both Lucene documents and typed objects based on the definition - public SearchResult SearchIndex(Query query, IResultDefinition definition, Filter filter, Sort sort) + public SearchResult SearchIndex(Query query, IResultDefinition definition, Filter filter, Sort sort, int maxNumberOfResults = 25000) { var searcher = this.GetSearcher(); TopDocs hits = null; - hits = searcher.Search(query, filter, 25000, sort); + hits = searcher.Search(query, filter, maxNumberOfResults, sort); var results = hits.scoreDocs.Select(h => searcher.Doc(h.doc)); return new SearchResult(results, definition); } From 0c07621de7d9f4f366732d27bda586895c44899d Mon Sep 17 00:00:00 2001 From: Jeffrey Date: Mon, 17 Nov 2014 22:23:50 -0800 Subject: [PATCH 6/8] Added TotalHits returned on SearchResult --- .../SearchServiceTestFixture.cs | 168 +++++++++++------- src/SimpleLucene/SearchResult.cs | 16 +- src/SimpleLucene/SearchService.cs | 7 +- 3 files changed, 117 insertions(+), 74 deletions(-) diff --git a/src/SimpleLucene.Tests/SearchServiceTestFixture.cs b/src/SimpleLucene.Tests/SearchServiceTestFixture.cs index df96751..e84af89 100644 --- a/src/SimpleLucene.Tests/SearchServiceTestFixture.cs +++ b/src/SimpleLucene.Tests/SearchServiceTestFixture.cs @@ -9,71 +9,72 @@ using SimpleLucene.Tests.Entities; namespace SimpleLucene.Tests -{ - [TestFixture] - public class SearchServiceTestFixture - { - RAMDirectory directory; - - [TestFixtureSetUp] - public void SetUp() - { - var repo = new Repository(); - - var writer = new MemoryIndexWriter(true); - using (var indexService = new IndexService(writer)) - { - indexService.IndexEntities(repo.Products, new ProductIndexDefinition()); - } - directory = writer.Directory; - } - - [TestFixtureTearDown] - public void TearDown() - { - directory.Close(); - } - - [Test] - public void Can_search_index() - { - var indexSearcher = new MemoryIndexSearcher(directory, true); - var searchService = new SearchService(indexSearcher); - - var result = searchService.SearchIndex(new ProductQuery().WithId(5).Query); - Assert.IsNotNull(result); - Assert.AreEqual(1, result.Documents.Count()); - } - - [Test] - public void Can_transform_results_with_result_definition() - { - var indexSearcher = new MemoryIndexSearcher(directory, true); - var searchService = new SearchService(indexSearcher); - - var result = searchService.SearchIndex( - new TermQuery(new Term("type", "product")), - new ProductResultDefinition() - ); - - Assert.IsNotNull(result); - Assert.AreEqual(10, result.Results.Count()); - } - - [Test] - public void Can_transform_results_with_delegate_definition() - { - var indexSearcher = new MemoryIndexSearcher(directory, true); - var searchService = new SearchService(indexSearcher); - - var result = searchService.SearchIndex( - new TermQuery(new Term("id", "1")), - doc => { - return new Product { Name = doc.Get("name") }; - }); - - Assert.AreEqual(result.Results.Count(), 1); - Assert.AreEqual(result.Results.First().Name, "Football"); +{ + [TestFixture] + public class SearchServiceTestFixture + { + RAMDirectory directory; + + [TestFixtureSetUp] + public void SetUp() + { + var repo = new Repository(); + + var writer = new MemoryIndexWriter(true); + using (var indexService = new IndexService(writer)) + { + indexService.IndexEntities(repo.Products, new ProductIndexDefinition()); + } + directory = writer.Directory; + } + + [TestFixtureTearDown] + public void TearDown() + { + directory.Close(); + } + + [Test] + public void Can_search_index() + { + var indexSearcher = new MemoryIndexSearcher(directory, true); + var searchService = new SearchService(indexSearcher); + + var result = searchService.SearchIndex(new ProductQuery().WithId(5).Query); + Assert.IsNotNull(result); + Assert.AreEqual(1, result.Documents.Count()); + } + + [Test] + public void Can_transform_results_with_result_definition() + { + var indexSearcher = new MemoryIndexSearcher(directory, true); + var searchService = new SearchService(indexSearcher); + + var result = searchService.SearchIndex( + new TermQuery(new Term("type", "product")), + new ProductResultDefinition() + ); + + Assert.IsNotNull(result); + Assert.AreEqual(10, result.Results.Count()); + } + + [Test] + public void Can_transform_results_with_delegate_definition() + { + var indexSearcher = new MemoryIndexSearcher(directory, true); + var searchService = new SearchService(indexSearcher); + + var result = searchService.SearchIndex( + new TermQuery(new Term("id", "1")), + doc => + { + return new Product { Name = doc.Get("name") }; + }); + + Assert.AreEqual(result.Results.Count(), 1); + Assert.AreEqual(result.Results.First().Name, "Football"); } [Test] @@ -119,6 +120,41 @@ public void Can_return_limited_number() Assert.AreEqual(numberResult, result.Documents.Count()); //Sorted: Assert.AreEqual(repo.Products.First(p => p.Id == 7).Id, result.Results.ElementAt(0).Id); - } + } + + [Test] + public void Can_return_total_hits() + { + var indexSearcher = new MemoryIndexSearcher(directory, true); + var searchService = new SearchService(indexSearcher); + + var result = searchService.SearchIndex( + new TermQuery(new Term("type", "product")), + new ProductResultDefinition(), + new PrefixFilter(new Term("name", "f")), + new Sort(new SortField("id", SortField.INT, true)) + ); + + Assert.AreEqual(2, result.TotalHits); + } + + [Test] + public void Can_return_total_hits_capped() + { + var indexSearcher = new MemoryIndexSearcher(directory, true); + var searchService = new SearchService(indexSearcher); + + var numberResult = 1; + + var result = searchService.SearchIndex( + new TermQuery(new Term("type", "product")), + new ProductResultDefinition(), + new PrefixFilter(new Term("name", "f")), + new Sort(new SortField("id", SortField.INT, true)), + numberResult + ); + + Assert.AreEqual(numberResult, result.TotalHits); + } } } diff --git a/src/SimpleLucene/SearchResult.cs b/src/SimpleLucene/SearchResult.cs index 3fcada4..fb9ed9e 100644 --- a/src/SimpleLucene/SearchResult.cs +++ b/src/SimpleLucene/SearchResult.cs @@ -7,15 +7,19 @@ namespace SimpleLucene public class SearchResult { private readonly IEnumerable documents; - private readonly IResultDefinition definition; + private readonly IResultDefinition definition; + private readonly int totalHits; - private IEnumerable entities; - - public SearchResult(IEnumerable documents, IResultDefinition definition) + private IEnumerable entities; + + public SearchResult(IEnumerable documents, IResultDefinition definition, int totalHits) { this.documents = documents; - this.definition = definition; - } + this.definition = definition; + this.totalHits = totalHits; + } + + public int TotalHits { get { return totalHits; } } public IEnumerable Documents { diff --git a/src/SimpleLucene/SearchService.cs b/src/SimpleLucene/SearchService.cs index 9dc5f37..0a2fd9a 100644 --- a/src/SimpleLucene/SearchService.cs +++ b/src/SimpleLucene/SearchService.cs @@ -47,7 +47,7 @@ public SearchResult SearchIndex(Query query, IResultDefinition definiti TopDocs hits = null; hits = searcher.Search(query, 25000); var results = hits.scoreDocs.Select(h => searcher.Doc(h.doc)); - return new SearchResult(results, definition); + return new SearchResult(results, definition, hits.totalHits); } ///
@@ -66,7 +66,10 @@ public SearchResult SearchIndex(Query query, IResultDefinition definiti TopDocs hits = null; hits = searcher.Search(query, filter, maxNumberOfResults, sort); var results = hits.scoreDocs.Select(h => searcher.Doc(h.doc)); - return new SearchResult(results, definition); + var hitCount = hits.totalHits < maxNumberOfResults + ? hits.totalHits + : maxNumberOfResults; + return new SearchResult(results, definition, hitCount); } public void Dispose() From bc654e765e362e1d576d202faabbb35112c38b80 Mon Sep 17 00:00:00 2001 From: Jeffrey Date: Tue, 18 Nov 2014 19:40:28 -0800 Subject: [PATCH 7/8] Fixed logic bug where we returned the number of results in the result set, not the TopHits, TotalHits count (all matching the result set, regardless of the number being returned). --- .../SearchServiceTestFixture.cs | 21 +++++++++++++++++-- src/SimpleLucene/SearchService.cs | 5 +---- 2 files changed, 20 insertions(+), 6 deletions(-) diff --git a/src/SimpleLucene.Tests/SearchServiceTestFixture.cs b/src/SimpleLucene.Tests/SearchServiceTestFixture.cs index e84af89..ca91492 100644 --- a/src/SimpleLucene.Tests/SearchServiceTestFixture.cs +++ b/src/SimpleLucene.Tests/SearchServiceTestFixture.cs @@ -139,7 +139,7 @@ public void Can_return_total_hits() } [Test] - public void Can_return_total_hits_capped() + public void Can_return_total_hits_capped_results() { var indexSearcher = new MemoryIndexSearcher(directory, true); var searchService = new SearchService(indexSearcher); @@ -154,7 +154,24 @@ public void Can_return_total_hits_capped() numberResult ); - Assert.AreEqual(numberResult, result.TotalHits); + Assert.AreEqual(numberResult, result.Results.Count()); + } + + [Test] + public void Can_return_total_hits_capped_results_uncapped_count() + { + var indexSearcher = new MemoryIndexSearcher(directory, true); + var searchService = new SearchService(indexSearcher); + + var result = searchService.SearchIndex( + new TermQuery(new Term("type", "product")), + new ProductResultDefinition(), + new PrefixFilter(new Term("name", "f")), + new Sort(new SortField("id", SortField.INT, true)), + 1 + ); + + Assert.AreEqual(2, result.TotalHits); } } } diff --git a/src/SimpleLucene/SearchService.cs b/src/SimpleLucene/SearchService.cs index 0a2fd9a..bee3cc8 100644 --- a/src/SimpleLucene/SearchService.cs +++ b/src/SimpleLucene/SearchService.cs @@ -66,10 +66,7 @@ public SearchResult SearchIndex(Query query, IResultDefinition definiti TopDocs hits = null; hits = searcher.Search(query, filter, maxNumberOfResults, sort); var results = hits.scoreDocs.Select(h => searcher.Doc(h.doc)); - var hitCount = hits.totalHits < maxNumberOfResults - ? hits.totalHits - : maxNumberOfResults; - return new SearchResult(results, definition, hitCount); + return new SearchResult(results, definition, hits.totalHits); } public void Dispose() From dcf9b6a4c8960b04b067c5304708f66ef525898b Mon Sep 17 00:00:00 2001 From: Jeffrey Date: Tue, 30 Dec 2014 13:55:02 -0800 Subject: [PATCH 8/8] Removed legacy package of Lucene.Net.2.9.2.2 - changed to using nuget reference instead --- .../SimpleLucene.Tests.csproj | 5 ++--- src/SimpleLucene.Tests/packages.config | 1 + src/SimpleLucene/SimpleLucene.csproj | 7 +++++-- src/SimpleLucene/packages.config | 4 ++++ .../Lucene.Net.2.9.2.2/Lucene.Net.dll | Bin 741376 -> 0 bytes 5 files changed, 12 insertions(+), 5 deletions(-) create mode 100644 src/SimpleLucene/packages.config delete mode 100644 src/packages-legacy/Lucene.Net.2.9.2.2/Lucene.Net.dll diff --git a/src/SimpleLucene.Tests/SimpleLucene.Tests.csproj b/src/SimpleLucene.Tests/SimpleLucene.Tests.csproj index de53813..3e096d0 100644 --- a/src/SimpleLucene.Tests/SimpleLucene.Tests.csproj +++ b/src/SimpleLucene.Tests/SimpleLucene.Tests.csproj @@ -34,9 +34,8 @@ 4 - - False - ..\packages-legacy\Lucene.Net.2.9.2.2\Lucene.Net.dll + + ..\packages\Lucene.Net.2.9.2.2\lib\net20\Lucene.Net.dll False diff --git a/src/SimpleLucene.Tests/packages.config b/src/SimpleLucene.Tests/packages.config index 77562db..c585878 100644 --- a/src/SimpleLucene.Tests/packages.config +++ b/src/SimpleLucene.Tests/packages.config @@ -1,4 +1,5 @@  + \ No newline at end of file diff --git a/src/SimpleLucene/SimpleLucene.csproj b/src/SimpleLucene/SimpleLucene.csproj index e4d6717..1732fe2 100644 --- a/src/SimpleLucene/SimpleLucene.csproj +++ b/src/SimpleLucene/SimpleLucene.csproj @@ -34,9 +34,9 @@ 4 - + False - ..\packages-legacy\Lucene.Net.2.9.2.2\Lucene.Net.dll + ..\packages\Lucene.Net.2.9.2.2\lib\net20\Lucene.Net.dll @@ -76,6 +76,9 @@ + + + diff --git a/src/SimpleLucene/packages.config b/src/SimpleLucene/packages.config new file mode 100644 index 0000000..9d7167c --- /dev/null +++ b/src/SimpleLucene/packages.config @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/src/packages-legacy/Lucene.Net.2.9.2.2/Lucene.Net.dll b/src/packages-legacy/Lucene.Net.2.9.2.2/Lucene.Net.dll deleted file mode 100644 index 138ec60820b8329938127dfd7764c539bf3c4f28..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 741376 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≠Zn7gc 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%0D@?xf(Z$8HNbjC`~P}TS}B{a55 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
RzjS?r15b&0Kf2 zfZs)I8`nK;C}}6x|Fj3By(vnC; ze3bst(nr#w0;HUOeZ8-{#jxT(kYR@PJ$I&zG zKN8##`AoC^6#3wu%V$~_65Mn7Ogn~3WvzOz;y;C*cw3}|yDSxb9trNURP>)w;&VmS zZ=ed4(Y+7(sJiPf(f6sn3w&I<8zs&}{G~Sd=h4%8f5&6bwY2w-KK$oLCTBEyf zE&VdZU`4E+ewPF*V)b;dC!#H|B34h2Ai;{*YkG>1@{n)aNWIKckrLMUBJ~gwthq(% zRYz?~&qIkG)z{CXM2}wAub`lvgM44tpNf1+B(R)34ssZXYFj1F%-gDcfueU|&S z)5nnp_W8(YFH34=4|V{&nSd>59HX|GM$J zW`&^D-F2J4vk1l-+Sx-dgMu3N`u5P_eMS(2C%b#<9Y`?Nz4SgLIF5Sh(@AjL_SP4m zpk-hB_STo7U=KO!+ecrGf@`85xdL3G259G7dJGBL*-uXupI{I z!CFa=-qvGDupI{KGf>c$C^kr6h=Tq-^c|#U3$fG9nBNe62Wfl54A)Q{-mC}5Z7_f6 zd6>QkmBHY7ykUBT39&R*zpw2#T;D;0S)AdzAAfrx#G3cb=juWFtA(#$yk3aPV6FOQ zvIPAY#X9u$^-ItL_&X8Bc_NC9&<~>0SaiR9u1BP|`bDyldR<4Ip);M}7Q8 z=~4V0&QSZ@ewl2H9!G)|xH0-ZQYOzgRuABB41<(#FV#4G9OfR(RE|DvcXvBik{AY%Nbf0)<2$2)o+q&^L*3vnn5Dgygz@IO&?0?g4#%e zE0$^c6;d3pVVWMp-`xpiCiY+IH(hTQD)dhOHGau@ThiSA*?u$i9#XsfQuWngB4t+p zNS3ajC++C}wO_g(5H4az`g^#Rpi>oxiN(V@Oe{eSUWpwA=S>Ce=K`Wcck z;F{key>11OGH^h#-(o$P^vVGK9ai__za0ssM55NC_%}XOF~xcg$mb~^kj4&(WSKgD z#2E9<=P5JwW~Ai<*10qF9hD%K%61H3>Jt4RY59PAeoOVKFNxUU0gwHb>ETs`j`JGc z*ON)V3{cBt=@(IHteDrZLXUe{r2MOeU1o*es46Ip{WBnntuO8DV>2w*@yaSQV7>-{XFTVfiIO=qgSaWQf3USS7yDQPg*vx0heEO5!*Ddd6|#( zSkl&kQEY?0q!z@)HRcArO>Iz?_0_;wuMK)f(nS;x@V`9s)j=_3Ht0PtCO%0v>T#$% z6=ECpbtpJ1MzKwLwh$XO=z_LM-(M=WS$^V;9Tde%1jkW{CJ!p+`Udl*vDt(AmD#L+ zhZ41C>!(p32Bl={Ka!x7Z2cSwO3BuLMv0bX>sO@)m&w+jq2SCuxJ-_2)Pa$JPni*A zw&;E+4}VK8qTwC*ON#;4$5TP z^@F5KC{_>3Ok>aoo)X1ZDtO-SL^Y)kYzWp?NZk=RaN!|XDj>$6eNmf2;#&=-mr z@58%gcIwMeqV}D7Hp+uF?9>mCV3c<1g(MiyowSYeOn7#+ME|x}$IIl6##mT%1`}TA4h_xqQB9nkl^X&e0?Sfo^H<9=aArOB#%B11y@Md%kXyv z2(b=>|15JvzamoN6IDm_$0%`h9M%0AL94};&QZMzDvc!#&SyvUfh4UppPSL=kfsif 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
$0+-AQRJ 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%0A)r;v%^`w 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 F{x{nhNf-bC

fu)eo!w09)1WPj+Ny09n{Tvvd@G*7-94C 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 O82R}@9=v958y;f%P*ibmnO2wFsmgaDhX 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