.NET 4.0 ټاسکونه: په Task.ContinueWith UI سلسلي کې د ریترو استثنا د

زه د WPF غوښتنلیک لرم ، چیرې چې زه د سیستم.تریډینګ. ټاسکس په کارولو سره د WCF اوږد مهال زنګ وهم. زه په غوښتنلیک کې د هینډلر اضافه کولو سره بې ارزښته استثناات لرم.

زه یو دنده رامینځته کوم ، چیرې چې د ContinWith فنکشن د UI موضوع کې د لاندې کوډ په کارولو سره پرمخ ځي:

var task = new Task<T>(func).ContinueWith(t =>
{
    if (t.IsFaulted)
    {
        throw t.Exception.GetBaseException();
    }
    else
    {
        // Show t.Result on UI
    }
}, TaskScheduler.FromCurrentSynchronizationContext());

کله چې په دنده کې استثنا پیښ شي. د استثنا له سره غور کول غواړئ نو ترڅو د ډیسپیتچر غیر منظم شوي ایکسپیس سمبالونکی دا اداره کړي. مګر کله چې زه استثناء له سره غورځوم ، لکه څنګه چې پورته ښودل شوي ، دا زما اپلیکیشن ماتوي او د ډیسپټچرډینډلډ ایګزیکشن نه غوښتل کیږي.

زه څنګه کولی شم چې په UI موضوع کې استثنا له سره له سره وغورځوم نو ترڅو د ډیسپټچر انډلډ شویډول اپلکیشن غوښتونکی وي؟

کله چې زه د شالید ورکر کاروم ، د استثنا له سره غور کول په حقیقت کې دا کار کړی. اساسا ، زه د ټاسک سره د پس منظر ورکر ځای په ځای کولو په لټه کې یم ، ځکه چې ټاسک ځینې واقعیا ښې ب featuresې لري زه غواړم ترې ګټه واخلم.

7
задан reporter 4 August 2011 в 13:43
поделиться