.NET: เดฎเตพเดŸเตเดŸเดฟเดคเตเดฐเต†เดกเดฟเด‚เด—เตเด‚ เด…เดธเดฟเตปเด•เตเดฐเดฃเดฟเดฏเตเด‚ เด‰เดชเดฏเต‹เด—เดฟเดšเตเดšเต เดชเตเดฐเดตเตผเดคเตเดคเดฟเด•เตเด•เตเดจเตเดจเดคเดฟเดจเตเดณเตเดณ เด‰เดชเด•เดฐเดฃเด™เตเด™เตพ. เดญเดพเด—เด‚ 1

เดนเดฌเตเดฑเดฟเดจเต†เด•เตเด•เตเดฑเดฟเดšเตเดšเตเดณเตเดณ เดฏเดฅเดพเตผเดคเตเดฅ เดฒเต‡เด–เดจเด‚ เดžเดพเตป เดชเตเดฐเดธเดฟเดฆเตเดงเต€เด•เดฐเดฟเด•เตเด•เตเดจเตเดจเต, เด…เดคเดฟเดจเตเดฑเต† เดตเดฟเดตเตผเดคเตเดคเดจเด‚ เด•เต‹เตผเดชเตเดชเดฑเต‡เดฑเตเดฑเดฟเตฝ เดชเต‹เดธเตเดฑเตเดฑเต เดšเต†เดฏเตเดคเดฟเดŸเตเดŸเตเดฃเตเดŸเต เดฌเตเดฒเต‹เด—เต เดชเต‹เดธเตเดฑเตเดฑเต.

เด‡เดตเดฟเดŸเต†เดฏเตเด‚ เด‡เดชเตเดชเต‹เดณเตเด‚ เดซเดฒเดคเตเดคเดฟเดจเดพเดฏเดฟ เด•เดพเดคเตเดคเดฟเดฐเดฟเด•เตเด•เดพเดคเต†, เด…เดฒเตเดฒเต†เด™เตเด•เดฟเตฝ เด…เดคเต เดšเต†เดฏเตเดฏเตเดจเตเดจ เดจเดฟเดฐเดตเดงเดฟ เดฏเต‚เดฃเดฟเดฑเตเดฑเตเด•เตพเด•เตเด•เดฟเดŸเดฏเดฟเตฝ เดตเดฒเดฟเดฏ เดœเต‹เดฒเดฟเด•เตพ เดตเดฟเดญเดœเดฟเด•เตเด•เดพเดคเต†, เด…เดธเดฎเดจเตเดตเดฟเดคเดฎเดพเดฏเดฟ เดŽเดจเตเดคเต†เด™เตเด•เดฟเดฒเตเด‚ เดšเต†เดฏเตเดฏเต‡เดฃเตเดŸเดคเดฟเดจเตเดฑเต† เด†เดตเดถเตเดฏเด•เดค เด•เดฎเตเดชเตเดฏเต‚เดŸเตเดŸเดฑเตเด•เดณเตเดŸเต† เด†เดตเดฟเตผเดญเดพเดตเดคเตเดคเดฟเดจเต เดฎเตเดฎเตเดชเต เดจเดฟเดฒเดตเดฟเดฒเตเดฃเตเดŸเดพเดฏเดฟเดฐเตเดจเตเดจเต. เด…เดตเดฐเตเดŸเต† เดตเดฐเดตเต‹เดŸเต†, เดˆ เด†เดตเดถเตเดฏเด‚ เดตเดณเดฐเต† เดฎเต‚เตผเดคเตเดคเดฎเดพเดฏเดฟ. เด‡เดชเตเดชเต‹เตพ, 2019-เตฝ, 8-เด•เต‹เตผ เด‡เดจเตเดฑเตฝ เด•เต‹เตผ เดชเตเดฐเต‹เดธเดธเดฑเตเดณเตเดณ เด’เดฐเต เดฒเดพเดชเตโ€ŒเดŸเต‹เดชเตเดชเดฟเตฝ เดžเดพเตป เดˆ เดฒเต‡เด–เดจเด‚ เดŸเตˆเดชเตเดชเต เดšเต†เดฏเตเดฏเตเดจเตเดจเต, เด…เดคเดฟเตฝ เดจเต‚เดฑเดฟเดฒเดงเดฟเด•เด‚ เดชเตเดฐเต‹เดธเดธเตเดธเตเด•เตพ เดธเดฎเดพเดจเตเดคเดฐเดฎเดพเดฏเดฟ เดชเตเดฐเดตเตผเดคเตเดคเดฟเด•เตเด•เตเดจเตเดจเต, เด…เดคเดฟเดฒเตเด‚ เด•เต‚เดŸเตเดคเตฝ เดคเตเดฐเต†เดกเตเด•เตพ. เดธเดฎเต€เดชเดคเตเดคเต, เด•เตเดฑเดšเตเดšเต เดถเต‹เดทเดฟเดšเตเดš เดซเต‹เตบ เด‰เดฃเตเดŸเต, เด•เตเดฑเดšเตเดšเต เดตเตผเดทเด™เตเด™เตพเด•เตเด•เต เดฎเตเดฎเตเดชเต เดตเดพเด™เตเด™เดฟเดฏเดคเดพเดฃเต, เด…เดคเดฟเตฝ 8-เด•เต‹เตผ เดชเตเดฐเตŠเดธเดธเตผ เด‰เดฃเตเดŸเต. 16-เด•เต‹เตผ เดชเตเดฐเต‹เดธเดธเดฑเตเด•เตพ เดซเต€เดšเตเดšเตผ เดšเต†เดฏเตเดฏเตเดจเตเดจ เดˆ เดตเตผเดทเดคเตเดคเต† เดฎเตเตปเดจเดฟเดฐ เดธเตเดฎเดพเตผเดŸเตเดŸเตโ€Œเดซเต‹เดฃเตเด•เดณเต† เด…เดตเดฐเตเดŸเต† เดฐเดšเดฏเดฟเดคเดพเด•เตเด•เตพ เด…เดญเดฟเดจเดจเตเดฆเดฟเด•เตเด•เตเดจเตเดจ เดฒเต‡เด–เดจเด™เตเด™เดณเตเด‚ เดตเต€เดกเดฟเดฏเต‹เด•เดณเตเด‚ เดคเต€เดฎเดพเดฑเตเดฑเดฟเด•เต เด‰เดฑเดตเดฟเดŸเด™เตเด™เดณเดฟเตฝ เดจเดฟเดฑเดžเตเดžเดฟเดฐเดฟเด•เตเด•เตเดจเตเดจเต. MS Azure 20 เด•เต‹เตผ เดชเตเดฐเตŠเดธเดธเดฑเตเด‚ 128 TB เดฑเดพเดฎเตเด‚ เด‰เดณเตเดณ เด’เดฐเต เดตเต†เตผเดšเตเดตเตฝ เดฎเต†เดทเต€เตป $2/เดฎเดฃเดฟเด•เตเด•เต‚เดฑเดฟเตฝ เดคเดพเดดเต† เดจเตฝเด•เตเดจเตเดจเต. เดจเดฟเตผเดญเดพเด—เตเดฏเดตเดถเดพเตฝ, เดคเตเดฐเต†เดกเตเด•เดณเตเดŸเต† เด‡เดŸเดชเต†เดŸเตฝ เดจเดฟเดฏเดจเตเดคเตเดฐเดฟเด•เตเด•เดพเตป เด•เดดเดฟเดฏเดพเดคเต† เดชเดฐเดฎเดพเดตเดงเดฟ เดŽเด•เตโ€Œเดธเตโ€ŒเดŸเตเดฐเดพเด•เตเดฑเตเดฑเตเดšเต†เดฏเตเดฏเดพเดจเตเด‚ เดˆ เดถเด•เตเดคเดฟ เดชเตเดฐเดฏเต‹เดœเดจเดชเตเดชเต†เดŸเตเดคเตเดคเดพเดจเตเด‚ เด•เดดเดฟเดฏเดฟเดฒเตเดฒ.

เดชเดฆเดพเดตเดฒเดฟ

เดชเตเดฐเด•เตเดฐเดฟเดฏ - OS เด’เดฌเตเดœเด•เตเดฑเตเดฑเต, เด’เดฑเตเดฑเดชเตเดชเต†เดŸเตเดŸ เดตเดฟเดฒเดพเดธ เด‡เดŸเด‚, เดคเตเดฐเต†เดกเตเด•เตพ เด…เดŸเด™เตเด™เดฟเดฏเดฟเดฐเดฟเด•เตเด•เตเดจเตเดจเต.
เดคเตเดฐเต†เดกเต - เด’เดฐเต OS เด’เดฌเตโ€Œเดœเด•เตเดฑเตเดฑเต, เดŽเด•เตโ€Œเดธเดฟเด•เตเดฏเต‚เดทเดจเตเดฑเต† เดเดฑเตเดฑเดตเตเด‚ เดšเต†เดฑเดฟเดฏ เดฏเต‚เดฃเดฟเดฑเตเดฑเต, เด’เดฐเต เดชเตเดฐเด•เตเดฐเดฟเดฏเดฏเตเดŸเต† เดญเดพเด—เด‚, เดคเตเดฐเต†เดกเตเด•เตพ เด’เดฐเต เดชเตเดฐเต‹เดธเดธเตเดธเดฟเดจเตเดณเตเดณเดฟเตฝ เดฎเต†เดฎเตเดฎเดฑเดฟเดฏเตเด‚ เดฎเดฑเตเดฑเต เด‰เดฑเดตเดฟเดŸเด™เตเด™เดณเตเด‚ เดชเดฐเดธเตเดชเดฐเด‚ เดชเด™เตเด•เดฟเดŸเตเดจเตเดจเต.
เดฎเตพเดŸเตเดŸเดฟเดŸเดพเดธเตเด•เดฟเด‚เด—เต - OS เดชเตเดฐเต‹เดชเตเดชเตผเดŸเตเดŸเดฟ, เด’เดฐเต‡เดธเดฎเดฏเด‚ เดจเดฟเดฐเดตเดงเดฟ เดชเตเดฐเด•เตเดฐเดฟเดฏเด•เตพ เดชเตเดฐเดตเตผเดคเตเดคเดฟเดชเตเดชเดฟเด•เตเด•เดพเดจเตเดณเตเดณ เด•เดดเดฟเดตเต
เดฎเตพเดŸเตเดŸเดฟ-เด•เต‹เตผ - เดชเตเดฐเต‹เดธเดธเตเดธเดฑเดฟเดจเตเดฑเต† เด’เดฐเต เดชเตเดฐเต‹เดชเตเดชเตผเดŸเตเดŸเดฟ, เดกเดพเดฑเตเดฑ เดชเตเดฐเต‹เดธเดธเตเดธเดฟเด‚เด—เดฟเดจเดพเดฏเดฟ เดจเดฟเดฐเดตเดงเดฟ เด•เต‹เดฑเตเด•เตพ เด‰เดชเดฏเต‹เด—เดฟเด•เตเด•เดพเดจเตเดณเตเดณ เด•เดดเดฟเดตเต
เดฎเตพเดŸเตเดŸเดฟเดชเตเดฐเต‹เดธเดธเดฟเด‚เด—เต - เด’เดฐเต เด•เดฎเตเดชเตเดฏเต‚เดŸเตเดŸเดฑเดฟเดจเตเดฑเต† เด’เดฐเต เดชเตเดฐเต‹เดชเตเดชเตผเดŸเตเดŸเดฟ, เดถเดพเดฐเต€เดฐเดฟเด•เดฎเดพเดฏเดฟ เดจเดฟเดฐเดตเดงเดฟ เดชเตเดฐเต‹เดธเดธเตเดธเดฑเตเด•เดณเตเดฎเดพเดฏเดฟ เด’เดฐเต‡เดธเดฎเดฏเด‚ เดชเตเดฐเดตเตผเดคเตเดคเดฟเด•เตเด•เดพเดจเตเดณเตเดณ เด•เดดเดฟเดตเต
เดฎเตพเดŸเตเดŸเดฟเดคเตเดฐเต†เดกเดฟเด‚เด—เต - เด’เดฐเต เดชเตเดฐเด•เตเดฐเดฟเดฏเดฏเตเดŸเต† เดธเตเดตเดคเตเดคเต, เดจเดฟเดฐเดตเดงเดฟ เดคเตเดฐเต†เดกเตเด•เตพเด•เตเด•เดฟเดŸเดฏเดฟเตฝ เดกเดพเดฑเตเดฑ เดชเตเดฐเต‹เดธเดธเตเดธเดฟเด‚เด—เต เดตเดฟเดคเดฐเดฃเด‚ เดšเต†เดฏเตเดฏเดพเดจเตเดณเตเดณ เด•เดดเดฟเดตเต.
เดธเดฎเดพเดจเตเดคเดฐเดตเดพเดฆเด‚ - เด’เดฐเต เดฏเต‚เดฃเดฟเดฑเตเดฑเต เดธเดฎเดฏเดคเตเดคเดฟเดจเต เด’เดฐเต‡เดธเดฎเดฏเด‚ เดถเดพเดฐเต€เดฐเดฟเด•เดฎเดพเดฏเดฟ เดจเดฟเดฐเดตเดงเดฟ เดชเตเดฐเดตเตผเดคเตเดคเดจเด™เตเด™เตพ เดšเต†เดฏเตเดฏเตเดจเตเดจเต
เด…เดธเดฎเดจเตเดตเดฟเดคเด‚ - เดˆ เดชเตเดฐเต‹เดธเดธเตเดธเดฟเด‚เด—เต เดชเต‚เตผเดคเตเดคเดฟเดฏเดพเด•เตเดจเตเดจเดคเตเดตเดฐเต† เด•เดพเดคเตเดคเดฟเดฐเดฟเด•เตเด•เดพเดคเต† เด’เดฐเต เด“เดชเตเดชเดฑเต‡เดทเตป เดจเดŸเดชเตเดชเดฟเดฒเดพเด•เตเด•เตเด•; เดจเดฟเตผเดตเตเดตเดนเดฃเดคเตเดคเดฟเดจเตเดฑเต† เดซเดฒเด‚ เดชเดฟเดจเตเดจเต€เดŸเต เดชเตเดฐเต‹เดธเดธเตเดธเต เดšเต†เดฏเตเดฏเดพเด‚.

เดญเดพเดตเดพเดฐเตเดคเตเดฅเด‚

เดŽเดฒเตเดฒเดพ เดจเดฟเตผเดตเดšเดจเด™เตเด™เดณเตเด‚ เดจเดฒเตเดฒเดคเดฒเตเดฒ, เดšเดฟเดฒเดคเดฟเดจเต เด…เดงเดฟเด• เดตเดฟเดถเดฆเต€เด•เดฐเดฃเด‚ เด†เดตเดถเตเดฏเดฎเดพเดฃเต, เด…เดคเดฟเดจเดพเตฝ เดžเดพเตป เด”เดชเดšเดพเดฐเดฟเด•เดฎเดพเดฏเดฟ เด…เดตเดคเดฐเดฟเดชเตเดชเดฟเดšเตเดš เดชเดฆเดพเดตเดฒเดฟเดฏเดฟเดฒเต‡เด•เตเด•เต เดชเตเดฐเดญเดพเดคเดญเด•เตเดทเดฃเด‚ เดชเดพเดšเด•เด‚ เดšเต†เดฏเตเดฏเตเดจเตเดจเดคเดฟเดจเต†เด•เตเด•เตเดฑเดฟเดšเตเดšเต เด’เดฐเต เดฐเต‚เดชเด•เด‚ เดšเต‡เตผเด•เตเด•เตเด‚. เดˆ เดฐเต‚เดชเด•เดคเตเดคเดฟเตฝ เดชเตเดฐเดญเดพเดคเดญเด•เตเดทเดฃเด‚ เดชเดพเดšเด•เด‚ เดšเต†เดฏเตเดฏเตเดจเตเดจเดคเต เด’เดฐเต เดชเตเดฐเด•เตเดฐเดฟเดฏเดฏเดพเดฃเต.

เดฐเดพเดตเดฟเดฒเต† เดชเตเดฐเดพเดคเตฝ เดคเดฏเตเดฏเดพเดฑเดพเด•เตเด•เตเดฎเตเดชเต‹เตพ เดžเดพเตป (เดธเดฟเดชเดฟเดฏเตเดžเดพเตป เด…เดŸเตเด•เตเด•เดณเดฏเดฟเดฒเต‡เด•เตเด•เต เดตเดฐเตเดจเตเดจเต (เด•เดฎเตเดชเตเดฏเต‚เดŸเตเดŸเตผ). เดŽเดจเดฟเด•เตเด•เต 2 เด•เตˆเด•เดณเตเดฃเตเดŸเต (เดชเดพเดณเดฟเด•เดณเดฟเตฝ). เด…เดŸเตเด•เตเด•เดณเดฏเดฟเตฝ เดจเดฟเดฐเดตเดงเดฟ เด‰เดชเด•เดฐเดฃเด™เตเด™เตพ เด‰เดฃเตเดŸเต (IO): เด“เดตเตป, เด•เต†เดฑเตเดฑเดฟเตฝ, เดŸเต‹เดธเตเดฑเตเดฑเตผ, เดฑเดซเตเดฐเดฟเดœเดฑเต‡เดฑเตเดฑเตผ. เดžเดพเตป เด—เตเดฏเดพเดธเต เด“เดฃเดพเด•เตเด•เดฟ, เด…เดคเดฟเตฝ เด’เดฐเต เดซเตเดฐเตˆเดฏเดฟเด‚เด—เต เดชเดพเตป เด‡เดŸเตเดŸเต, เด…เดคเต เดšเต‚เดŸเดพเด•เตเดจเตเดจเดคเตเดตเดฐเต† เด•เดพเดคเตเดคเดฟเดฐเดฟเด•เตเด•เดพเดคเต† เด…เดคเดฟเตฝ เดŽเดฃเตเดฃ เด’เดดเดฟเด•เตเด•เตเด• (เด…เดธเดฎเดจเตเดตเดฟเดคเดฎเดพเดฏเดฟ, เดจเต‹เตบ-เดฌเตเดฒเต‹เด•เตเด•เดฟเด‚เด—เต-เดเด’-เดตเต†เดฏเตเดฑเตเดฑเต), เดžเดพเตป เดฑเดซเตเดฐเดฟเดœเดฑเต‡เดฑเตเดฑเดฑเดฟเตฝ เดจเดฟเดจเตเดจเต เดฎเตเดŸเตเดŸเด•เตพ เดŽเดŸเตเดคเตเดคเต เด’เดฐเต เดชเตเดฒเต‡เดฑเตเดฑเดฟเดฒเต‡เด•เตเด•เต เดชเตŠเดŸเตเดŸเดฟเดšเตเดšเต เด’เดฐเต เด•เตˆเด•เตŠเดฃเตเดŸเต เด…เดŸเดฟเด•เตเด•เตเด• (เดคเตเดฐเต†เดกเต#1), เดฐเดฃเตเดŸเดพเดฎเดคเตเดคเต‡เดคเต (เดคเตเดฐเต†เดกเต#2) เดชเตเดฒเต‡เดฑเตเดฑเต เดชเดฟเดŸเดฟเดšเตเดšเต (เดชเด™เตเด•เดฟเดŸเตเดŸ เดตเดฟเดญเดตเด‚). เด‡เดชเตเดชเต‹เตพ เดžเดพเตป เด•เต†เดฑเตเดฑเดฟเตฝ เด“เดฃเดพเด•เตเด•เดพเตป เด†เด—เตเดฐเดนเดฟเด•เตเด•เตเดจเตเดจเต, เดชเด•เตเดทเต‡ เดŽเดจเดฟเด•เตเด•เต เดตเต‡เดฃเตเดŸเดคเตเดฐ เด•เตˆเด•เดณเดฟเดฒเตเดฒ (เดคเตเดฐเต†เดกเต เดชเดŸเตเดŸเดฟเดฃเดฟ) เดˆ เดธเดฎเดฏเดคเตเดคเต, เดตเดฑเตเดคเตเดค เดชเดพเตป เดšเต‚เดŸเดพเด•เตเด•เตเดจเตเดจเต (เดซเดฒเด‚ เดชเตเดฐเต‹เดธเดธเตเดธเต เดšเต†เดฏเตเดฏเตเดจเตเดจเต) เด…เดคเดฟเตฝ เดžเดพเตป เดšเดฎเตเดฎเดŸเตเดŸเดฟเดฏเต†เดŸเตเดคเตเดคเดคเต เด’เดดเดฟเด•เตเด•เตเด•. เดžเดพเตป เด•เต†เดฑเตเดฑเดฟเตฝ เดŽเดคเตเดคเดฟ เด…เดคเต เด“เดฃเดพเด•เตเด•เดฟ เด…เดคเดฟเตฝ เดตเต†เดณเตเดณเด‚ เดคเดฟเดณเดฏเตเด•เตเด•เตเดจเตเดจเดคเต เดฎเดฃเตเดŸเดคเตเดคเดฐเดฎเดพเดฏเดฟ เด•เดพเดฃเตเดจเตเดจเต (เดคเดŸเดฏเตฝ-IO-เด•เดพเดคเตเดคเดฟเดฐเดฟเด•เตเด•เตเด•), เดˆ เดธเดฎเดฏเดคเตเดคเต เด…เดฏเดพเตพเด•เตเด•เต เด“เด‚เดฒเต†เดฑเตเดฑเต เด…เดŸเดฟเดšเตเดš เดชเตเดฒเต‡เดฑเตเดฑเต เด•เดดเตเด•เดพเดฎเดพเดฏเดฟเดฐเตเดจเตเดจเต.

เดžเดพเตป 2 เด•เตˆเด•เตพ เดฎเดพเดคเตเดฐเด‚ เด‰เดชเดฏเต‹เด—เดฟเดšเตเดšเต เด’เดฐเต เด“เด‚เดฒเต†เดฑเตเดฑเต เดชเดพเด•เด‚ เดšเต†เดฏเตเดคเต, เดŽเดจเดฟเด•เตเด•เต เด•เต‚เดŸเตเดคเตฝ เด‡เดฒเตเดฒ, เดŽเดจเตเดจเดพเตฝ เด…เดคเต‡ เดธเดฎเดฏเด‚, เด“เด‚เดฒเต†เดฑเตเดฑเต เด…เดŸเดฟเดšเตเดš เดจเดฟเดฎเดฟเดทเดคเตเดคเดฟเตฝ, เด’เดฐเต‡เดธเดฎเดฏเด‚ 3 เด“เดชเตเดชเดฑเต‡เดทเดจเตเด•เตพ เดจเดŸเดจเตเดจเต: เด“เด‚เดฒเต†เดฑเตเดฑเต เด…เดŸเดฟเด•เตเด•เตเด•, เดชเตเดฒเต‡เดฑเตเดฑเต เดชเดฟเดŸเดฟเด•เตเด•เตเด•, เดตเดฑเดšเดŸเตเดŸเดฟ เดšเต‚เดŸเดพเด•เตเด•เตเด• เด•เดฎเตเดชเตเดฏเต‚เดŸเตเดŸเดฑเดฟเดจเตเดฑเต† เดเดฑเตเดฑเดตเตเด‚ เดตเต‡เด—เดคเดฏเต‡เดฑเดฟเดฏ เดญเดพเด—เดฎเดพเดฃเต เดธเดฟเดชเดฟเดฏเต, เดฎเดฟเด•เตเด•เดชเตเดชเต‹เดดเตเด‚ เดŽเดฒเตเดฒเดพเด‚ เดฎเดจเตเดฆเด—เดคเดฟเดฏเดฟเดฒเดพเด•เตเดจเตเดจเดคเต เดเด’เดฏเดพเดฃเต, เด…เดคเดฟเดจเดพเตฝ เดเด’เดฏเดฟเตฝ เดจเดฟเดจเตเดจเต เดกเดพเดฑเตเดฑ เดธเตเดตเต€เด•เดฐเดฟเด•เตเด•เตเดฎเตเดชเต‹เตพ เดธเดฟเดชเดฟเดฏเต เดŽเดจเตเดคเต†เด™เตเด•เดฟเดฒเตเด‚ เด‰เดชเดฏเต‹เด—เดฟเดšเตเดšเต เด•เตˆเดตเดถเดชเตเดชเต†เดŸเตเดคเตเดคเตเด• เดŽเดจเตเดจเดคเดพเดฃเต เดชเดฒเดชเตเดชเต‹เดดเตเด‚ เดซเดฒเดชเตเดฐเดฆเดฎเดพเดฏ เดชเดฐเดฟเดนเดพเดฐเด‚.

เดฐเต‚เดชเด•เด‚ เดคเตเดŸเดฐเตเดจเตเดจเต:

  • เด’เดฐเต เด“เด‚เดฒเต†เดฑเตเดฑเต เดคเดฏเตเดฏเดพเดฑเดพเด•เตเด•เตเดจเตเดจ เดชเตเดฐเด•เตเดฐเดฟเดฏเดฏเดฟเตฝ, เดžเดพเตป เดตเดธเตเดคเตเดฐเด‚ เดฎเดพเดฑเตเดฑเดพเตป เดถเตเดฐเดฎเดฟเด•เตเด•เตเด•เดฏเดพเดฃเต†เด™เตเด•เดฟเตฝ, เด‡เดคเต เดฎเตพเดŸเตเดŸเดฟเดŸเดพเดธเตเด•เดฟเด‚เด—เดฟเดจเตเดฑเต† เด’เดฐเต เด‰เดฆเดพเดนเดฐเดฃเดฎเดพเดฏเดฟเดฐเดฟเด•เตเด•เตเด‚. เด’เดฐเต เดชเตเดฐเดงเดพเดจ เดจเตเดฏเต‚เดจเตปเดธเต: เด•เดฎเตเดชเตเดฏเต‚เดŸเตเดŸเดฑเตเด•เตพ เด‡เดคเดฟเตฝ เด†เดณเตเด•เดณเต‡เด•เตเด•เดพเตพ เดตเดณเดฐเต† เดฎเดฟเด•เดšเตเดšเดคเดพเดฃเต.
  • เดจเดฟเดฐเดตเดงเดฟ เดชเดพเดšเด•เด•เตเด•เดพเดฐเตเดณเตเดณ เด’เดฐเต เด…เดŸเตเด•เตเด•เดณ, เด‰เดฆเดพเดนเดฐเดฃเดคเตเดคเดฟเดจเต เด’เดฐเต เดฑเต†เดธเตเดฑเตเดฑเต‹เดฑเดจเตเดฑเดฟเตฝ - เด’เดฐเต เดฎเตพเดŸเตเดŸเดฟ-เด•เต‹เตผ เด•เดฎเตเดชเตเดฏเต‚เดŸเตเดŸเตผ.
  • เด’เดฐเต เดทเต‹เดชเตเดชเดฟเด‚เด—เต เดธเต†เดจเตเดฑเดฑเดฟเดฒเต† เดซเตเดกเต เด•เต‹เตผเดŸเตเดŸเดฟเดฒเต† เดจเดฟเดฐเดตเดงเดฟ เดฑเต†เดธเตเดฑเตเดฑเต‹เดฑเดจเตเดฑเตเด•เตพ - เดกเดพเดฑเตเดฑเดพ เดธเต†เดจเตเดฑเตผ

.NET เดŸเต‚เดณเตเด•เตพ

.NET เดฎเดฑเตเดฑเต เดชเดฒ เด•เดพเดฐเตเดฏเด™เตเด™เดณเตเด‚ เดชเต‹เดฒเต† เดคเตเดฐเต†เดกเตเด•เดณเตเดฎเดพเดฏเดฟ เดชเตเดฐเดตเตผเดคเตเดคเดฟเด•เตเด•เดพเตป เดจเดฒเตเดฒเดคเดพเดฃเต. เด“เดฐเต‹ เดชเตเดคเดฟเดฏ เดชเดคเดฟเดชเตเดชเดฟเดฒเตเด‚, เด…เดตเดฏเตโ€Œเด•เตเด•เตŠเดชเตเดชเด‚ เดชเตเดฐเดตเตผเดคเตเดคเดฟเด•เตเด•เตเดจเตเดจเดคเดฟเดจเตเดณเตเดณ เด•เต‚เดŸเตเดคเตฝ เด•เต‚เดŸเตเดคเตฝ เดชเตเดคเดฟเดฏ เดŸเต‚เดณเตเด•เตพ, OS เดคเตเดฐเต†เดกเตเด•เดณเดฟเดฒเต‚เดŸเต† เด…เดฎเต‚เตผเดคเตเดคเดคเดฏเตเดŸเต† เดชเตเดคเดฟเดฏ เดชเดพเดณเดฟเด•เตพ เด‡เดคเต เด…เดตเดคเดฐเดฟเดชเตเดชเดฟเด•เตเด•เตเดจเตเดจเต. เด…เดฎเต‚เตผเดคเตเดคเด™เตเด™เดณเตเดŸเต† เดจเดฟเตผเดฎเตเดฎเดพเดฃเดตเตเดฎเดพเดฏเดฟ เดชเตเดฐเดตเตผเดคเตเดคเดฟเด•เตเด•เตเดฎเตเดชเต‹เตพ, เดซเตเดฐเต†เดฏเดฟเด‚เดตเตผเด•เตเด•เต เดกเต†เดตเดฒเดชเตเดชเตผเดฎเดพเตผ เด’เดฐเต เดธเดฎเต€เดชเดจเด‚ เด‰เดชเดฏเต‹เด—เดฟเด•เตเด•เตเดจเตเดจเต, เด‰เดฏเตผเดจเตเดจ เดคเดฒเดคเตเดคเดฟเดฒเตเดณเตเดณ เด…เดฎเต‚เตผเดคเตเดคเต€เด•เดฐเดฃเด‚ เด‰เดชเดฏเต‹เด—เดฟเด•เตเด•เตเดฎเตเดชเต‹เตพ, เด’เดจเตเดจเต‹ เด…เดคเดฟเดฒเดงเดฟเด•เดฎเต‹ เดฒเต†เดตเดฒเตเด•เตพ เดคเดพเดดเต‡เด•เตเด•เต เดชเต‹เด•เดพเดจเตเดณเตเดณ เด…เดตเดธเดฐเด‚ เดจเตฝเด•เตเดจเตเดจเต. เดฎเดฟเด•เตเด•เดชเตเดชเต‹เดดเตเด‚ เด‡เดคเต เด†เดตเดถเตเดฏเดฎเดฟเดฒเตเดฒ, เดตเดพเดธเตเดคเดตเดคเตเดคเดฟเตฝ เด‡เดคเต เด’เดฐเต เดทเต‹เดŸเตเดŸเตเด—เตบ เด‰เดชเดฏเต‹เด—เดฟเดšเตเดšเต เด•เดพเดฒเดฟเตฝ เดธเตเดตเดฏเด‚ เดตเต†เดŸเดฟเดตเดฏเตเด•เตเด•เดพเดจเตเดณเตเดณ เดตเดพเดคเดฟเตฝ เดคเตเดฑเด•เตเด•เตเดจเตเดจเต, เดŽเดจเตเดจเดพเตฝ เดšเดฟเดฒเดชเตเดชเต‹เตพ, เด…เดชเต‚เตผเดต เดธเดจเตเดฆเตผเดญเด™เตเด™เดณเดฟเตฝ, เดจเดฟเดฒเดตเดฟเดฒเต† เด…เดฎเต‚เตผเดคเตเดคเต€เด•เดฐเดฃ เดคเดฒเดคเตเดคเดฟเตฝ เดชเดฐเดฟเดนเดฐเดฟเด•เตเด•เดชเตเดชเต†เดŸเดพเดคเตเดค เด’เดฐเต เดชเตเดฐเดถเตเดจเด‚ เดชเดฐเดฟเดนเดฐเดฟเด•เตเด•เดพเดจเตเดณเตเดณ เด’เดฐเต‡เดฏเตŠเดฐเต เดฎเดพเตผเด—เตเด—เดฎเดพเดฃเดฟเดคเต. .

เดŸเต‚เดณเตเด•เตพ เด•เตŠเดฃเตเดŸเต, เดžเดพเตป เด‰เดฆเตเดฆเต‡เดถเดฟเด•เตเด•เตเดจเตเดจเดคเต เดซเตเดฐเต†เดฏเดฟเด‚เดตเตผเด•เตเด•เตเด‚ เดฎเต‚เดจเตเดจเดพเด‚ เด•เด•เตเดทเดฟ เดชเดพเด•เตเด•เต‡เดœเตเด•เดณเตเด‚ เดจเตฝเด•เตเดจเตเดจ เดฐเดฃเตเดŸเต เด†เดชเตเดฒเดฟเด•เตเด•เต‡เดทเตป เดชเตเดฐเต‹เด—เตเดฐเดพเดฎเดฟเด‚เด—เต เด‡เดจเตเดฑเตผเดซเต‡เดธเตเด•เดณเตเด‚ (API-เด•เดณเตเด‚), เดฎเตพเดŸเตเดŸเดฟ-เดคเตเดฐเต†เดกเดกเต เด•เต‹เดกเตเดฎเดพเดฏเดฟ เดฌเดจเตเดงเดชเตเดชเต†เดŸเตเดŸ เดŽเดจเตเดคเต†เด™เตเด•เดฟเดฒเตเด‚ เดชเตเดฐเดถเตเดจเด™เตเด™เตพเด•เตเด•เตเดณเตเดณ เดคเดฟเดฐเดฏเตฝ เดฒเดณเดฟเดคเดฎเดพเด•เตเด•เตเดจเตเดจ เดฎเตเดดเตเดตเตป เดธเต‹เดซเตโ€Œเดฑเตเดฑเตโ€Œเดตเต†เดฏเตผ เดชเดฐเดฟเดนเดพเดฐเด™เตเด™เดณเตเด‚.

เด’เดฐเต เดคเตเดฐเต†เดกเต เด†เดฐเด‚เดญเดฟเด•เตเด•เตเดจเตเดจเต

เดคเตเดฐเต†เดกเตเด•เดณเดฟเตฝ เดชเตเดฐเดตเตผเดคเตเดคเดฟเด•เตเด•เตเดจเตเดจเดคเดฟเดจเตเดณเตเดณ .NET เดฒเต† เดเดฑเตเดฑเดตเตเด‚ เด…เดŸเดฟเดธเตเดฅเดพเดจ เด•เตเดฒเดพเดธเดพเดฃเต เดคเตเดฐเต†เดกเต เด•เตเดฒเดพเดธเต. เด•เตบเดธเตเดŸเตเดฐเด•เตเดฑเตเดฑเตผ เดฐเดฃเตเดŸเต เดชเตเดฐเดคเดฟเดจเดฟเดงเดฟเด•เดณเดฟเตฝ เด’เดฐเดพเดณเต† เดธเตเดตเต€เด•เดฐเดฟเด•เตเด•เตเดจเตเดจเต:

  • เดคเตเดฐเต†เดกเตเดธเตเดฑเตเดฑเดพเตผเดŸเตเดŸเต - เดชเดฐเดพเดฎเต€เดฑเตเดฑเดฑเตเด•เดณเตŠเดจเตเดจเตเดฎเดฟเดฒเตเดฒ
  • ParametrizedThreadStart - เดคเดฐเด‚ เด’เดฌเตโ€Œเดœเด•เตโ€Œเดฑเตเดฑเดฟเดจเตเดฑเต† เด’เดฐเต เดชเดพเดฐเดพเดฎเต€เดฑเตเดฑเดฑเดฟเดจเตŠเดชเตเดชเด‚.

เดธเตเดฑเตเดฑเดพเตผเดŸเตเดŸเต เดฎเต†เดคเตเดคเต‡เดกเต เดตเดฟเดณเดฟเดšเตเดšเดคเดฟเดจเต เดถเต‡เดทเด‚ เดกเต†เดฒเดฟเด—เต‡เดฑเตเดฑเต เดชเตเดคเตเดคเดพเดฏเดฟ เดธเตƒเดทเตโ€ŒเดŸเดฟเดšเตเดš เดคเตเดฐเต†เดกเดฟเตฝ เดŽเด•เตโ€Œเดธเดฟเด•เตเดฏเต‚เดŸเตเดŸเต เดšเต†เดฏเตเดฏเดชเตเดชเต†เดŸเตเด‚. ParametrizedThreadStart เดŸเตˆเดชเตเดชเดฟเดจเตเดฑเต† เด’เดฐเต เดกเต†เดฒเดฟเด—เต‡เดฑเตเดฑเต เด•เตบเดธเตโ€ŒเดŸเตเดฐเด•เตโ€ŒเดŸเดฑเดฟเดจเต เด•เตˆเดฎเดพเดฑเดฟเดฏเต†เด™เตเด•เดฟเตฝ, เด’เดฐเต เด’เดฌเตโ€Œเดœเด•เตเดฑเตเดฑเต เด†เดฐเด‚เดญ เดฐเต€เดคเดฟเดฏเดฟเดฒเต‡เด•เตเด•เต เด•เตˆเดฎเดพเดฑเดฃเด‚. เดเดคเต†เด™เตเด•เดฟเดฒเตเด‚ เดชเตเดฐเดพเดฆเต‡เดถเดฟเด• เดตเดฟเดตเดฐเด™เตเด™เตพ เดธเตเดŸเตเดฐเต€เดฎเดฟเดฒเต‡เด•เตเด•เต เด•เตˆเดฎเดพเดฑเดพเตป เดˆ เดธเด‚เดตเดฟเดงเดพเดจเด‚ เด†เดตเดถเตเดฏเดฎเดพเดฃเต. เด’เดฐเต เดคเตเดฐเต†เดกเต เดธเตƒเดทเตโ€ŒเดŸเดฟเด•เตเด•เตเดจเตเดจเดคเต เดšเต†เดฒเดตเต‡เดฑเดฟเดฏ เดชเตเดฐเดตเตผเดคเตเดคเดจเดฎเดพเดฃเต†เดจเตเดจเตเด‚, เดคเตเดฐเต†เดกเต เดคเดจเตเดจเต† เด’เดฐเต เดญเดพเดฐเดฎเต‡เดฑเดฟเดฏ เด’เดฌเตโ€Œเดœเด•เตเดฑเตเดฑเต เด†เดฃเต†เดจเตเดจเตเด‚ เดถเตเดฐเดฆเตเดงเดฟเด•เตเด•เต‡เดฃเตเดŸเดคเดพเดฃเต, เด•เดพเดฐเดฃเด‚ เด‡เดคเต เดธเตเดฑเตเดฑเดพเด•เตเด•เดฟเตฝ 1MB เดฎเต†เดฎเตเดฎเดฑเดฟ เด…เดจเตเดตเดฆเดฟเด•เตเด•เตเด•เดฏเตเด‚ OS API- เดฏเตเดฎเดพเดฏเดฟ เด‡เดŸเดชเต†เดŸเตฝ เด†เดตเดถเตเดฏเดฎเดพเดฃเต.

new Thread(...).Start(...);

ThreadPool เด•เตเดฒเดพเดธเต เด’เดฐเต เดชเต‚เตพ เดŽเดจเตเดจ เด†เดถเดฏเดคเตเดคเต† เดชเตเดฐเดคเดฟเดจเดฟเดงเต€เด•เดฐเดฟเด•เตเด•เตเดจเตเดจเต. .NET-เตฝ, เดคเตเดฐเต†เดกเต เดชเต‚เตพ เดŽเดžเตเดšเดฟเดจเต€เดฏเดฑเดฟเด‚เด—เดฟเดจเตเดฑเต† เด’เดฐเต เดญเดพเด—เดฎเดพเดฃเต, เด•เต‚เดŸเดพเดคเต† เดฎเตˆเด•เตเดฐเต‹เดธเต‹เดซเตเดฑเตเดฑเดฟเดฒเต† เดกเต†เดตเดฒเดชเตเดชเตผเดฎเดพเตผ เด…เดคเต เดตเตˆเดตเดฟเดงเตเดฏเดฎเดพเตผเดจเตเดจ เดธเดพเดนเดšเดฐเตเดฏเด™เตเด™เดณเดฟเตฝ เดฎเดฟเด•เดšเตเดš เดฐเต€เดคเดฟเดฏเดฟเตฝ เดชเตเดฐเดตเตผเดคเตเดคเดฟเด•เตเด•เตเดจเตเดจเตเดตเต†เดจเตเดจเต เด‰เดฑเดชเตเดชเดพเด•เตเด•เดพเตป เดตเดณเดฐเต†เดฏเดงเดฟเด•เด‚ เดชเดฐเดฟเดถเตเดฐเดฎเดฟเดšเตเดšเดฟเดŸเตเดŸเตเดฃเตเดŸเต.

เดชเตŠเดคเตเดตเดพเดฏ เด†เดถเดฏเด‚:

เด†เดชเตเดฒเดฟเด•เตเด•เต‡เดทเตป เด†เดฐเด‚เดญเดฟเด•เตเด•เตเดจเตเดจ เดจเดฟเดฎเดฟเดทเด‚ เดฎเตเดคเตฝ, เดชเดถเตเดšเดพเดคเตเดคเดฒเดคเตเดคเดฟเตฝ เดฑเดฟเดธเตผเดตเดฟเตฝ เดจเดฟเดฐเดตเดงเดฟ เดคเตเดฐเต†เดกเตเด•เตพ เดธเตƒเดทเตเดŸเดฟเด•เตเด•เตเด•เดฏเตเด‚ เด…เดต เด‰เดชเดฏเต‹เด—เดคเตเดคเดฟเดจเดพเดฏเดฟ เดŽเดŸเตเด•เตเด•เดพเดจเตเดณเตเดณ เด•เดดเดฟเดตเต เดจเตฝเด•เตเด•เดฏเตเด‚ เดšเต†เดฏเตเดฏเตเดจเตเดจเต. เดคเตเดฐเต†เดกเตเด•เตพ เด‡เดŸเดฏเตเด•เตเด•เดฟเดŸเต†เดฏเตเด‚ เดตเดฒเดฟเดฏ เด…เดณเดตเดฟเดฒเตเด‚ เด‰เดชเดฏเต‹เด—เดฟเด•เตเด•เตเด•เดฏเดพเดฃเต†เด™เตเด•เดฟเตฝ, เดตเดฟเดณเดฟเด•เตเด•เตเดจเตเดจเดฏเดพเดณเตเดŸเต† เด†เดตเดถเตเดฏเด™เตเด™เตพ เดจเดฟเดฑเดตเต‡เดฑเตเดฑเตเดจเตเดจเดคเดฟเดจเดพเดฏเดฟ เดชเต‚เตพ เดตเดฟเด•เดธเดฟเด•เตเด•เตเดจเตเดจเต. เดถเดฐเดฟเดฏเดพเดฏ เดธเดฎเดฏเดคเตเดคเต เดชเต‚เดณเดฟเตฝ เดธเต—เดœเดจเตเดฏ เดคเตเดฐเต†เดกเตเด•เตพ เด‡เดฒเตเดฒเต†เด™เตเด•เดฟเตฝ, เด…เดคเต เด’เดจเตเดจเตเด•เดฟเตฝ เดคเตเดฐเต†เดกเตเด•เดณเดฟเดฒเตŠเดจเตเดจเต เดคเดฟเดฐเดฟเด•เต† เดตเดฐเตเดจเตเดจเดคเดฟเดจเดพเดฏเดฟ เด•เดพเดคเตเดคเดฟเดฐเดฟเด•เตเด•เตเด‚, เด…เดฒเตเดฒเต†เด™เตเด•เดฟเตฝ เดชเตเดคเดฟเดฏเดคเตŠเดจเตเดจเต เดธเตƒเดทเตเดŸเดฟเด•เตเด•เตเด‚. เดšเดฟเดฒ เดนเตเดฐเดธเตเดตเด•เดพเดฒ เดชเตเดฐเดตเตผเดคเตเดคเดจเด™เตเด™เตพเด•เตเด•เต เดคเตเดฐเต†เดกเต เดชเต‚เตพ เดฎเดฟเด•เดšเตเดšเดคเดพเดฃเต†เดจเตเดจเตเด‚ เด†เดชเตเดฒเดฟเด•เตเด•เต‡เดทเดจเตเดฑเต† เดฎเตเดดเตเดตเตป เดชเตเดฐเดตเตผเดคเตเดคเดจเดคเตเดคเดฟเดฒเตเดŸเดจเต€เดณเด‚ เดธเต‡เดตเดจเด™เตเด™เดณเดพเดฏเดฟ เดชเตเดฐเดตเตผเดคเตเดคเดฟเด•เตเด•เตเดจเตเดจ เดชเตเดฐเดตเตผเดคเตเดคเดจเด™เตเด™เตพเด•เตเด•เต เด…เดจเตเดฏเต‹เดœเตเดฏเดฎเดฒเตเดฒเต†เดจเตเดจเตเด‚ เด‡เดคเต เดชเดฟเดจเตเดคเตเดŸเดฐเตเดจเตเดจเต.

เดชเต‚เดณเดฟเตฝ เดจเดฟเดจเตเดจเต เด’เดฐเต เดคเตเดฐเต†เดกเต เด‰เดชเดฏเต‹เด—เดฟเด•เตเด•เตเดจเตเดจเดคเดฟเดจเต, WaitCallback เดคเดฐเดคเตเดคเดฟเดจเตเดฑเต† เด’เดฐเต เดชเตเดฐเดคเดฟเดจเดฟเดงเดฟเดฏเต† เดธเตเดตเต€เด•เดฐเดฟเด•เตเด•เตเดจเตเดจ เด’เดฐเต QueueUserWorkItem เดฐเต€เดคเดฟเดฏเตเดฃเตเดŸเต, เด…เดคเดฟเดจเต ParametrizedThreadStart-เดจเตเดฑเต† เด…เดคเต‡ เด’เดชเตเดชเต เด‰เดฃเตเดŸเต, เด…เดคเดฟเดฒเต‡เด•เตเด•เต เด…เดฏเดšเตเดš เดชเดพเดฐเดพเดฎเต€เดฑเตเดฑเตผ เด…เดคเต‡ เดซเด‚เด—เตโ€Œเดทเตป เดšเต†เดฏเตเดฏเตเดจเตเดจเต.

ThreadPool.QueueUserWorkItem(...);

เด…เดคเตเดฐ เด…เดฑเดฟเดฏเดชเตเดชเต†เดŸเดพเดคเตเดค เดคเตเดฐเต†เดกเต เดชเต‚เตพ เดฐเต€เดคเดฟ RegisterWaitForSingleObject เดจเต‹เตบ-เดฌเตเดฒเต‹เด•เตเด•เดฟเด‚เด—เต IO เด“เดชเตเดชเดฑเต‡เดทเดจเตเด•เตพ เดธเด‚เด˜เดŸเดฟเดชเตเดชเดฟเด•เตเด•เดพเตป เด‰เดชเดฏเต‹เด—เดฟเด•เตเด•เตเดจเตเดจเต. WaitHandle เดˆ เดฐเต€เดคเดฟเดฏเดฟเดฒเต‡เด•เตเด•เต เดชเดพเดธเตเดธเดพเด•เตเด•เดฟเดฏ เดกเต†เดฒเดฟเด—เต‡เดฑเตเดฑเดฟเดจเต† "เดฑเดฟเดฒเต€เดธเต เดšเต†เดฏเตเดคเต" เดŽเดจเตเดจเต เดตเดฟเดณเดฟเด•เตเด•เตเด‚.

ThreadPool.RegisterWaitForSingleObject(...)

.NET-เดจเต เด’เดฐเต เดคเตเดฐเต†เดกเต เดŸเตˆเดฎเตผ เด‰เดฃเตเดŸเต, เด…เดคเต WinForms/WPF เดŸเตˆเดฎเดฑเตเด•เดณเดฟเตฝ เดจเดฟเดจเตเดจเต เดตเตเดฏเดคเตเดฏเดธเตเดคเดฎเดพเดฃเต, เดชเต‚เดณเดฟเตฝ เดจเดฟเดจเตเดจเต เดŽเดŸเตเดคเตเดค เด’เดฐเต เดคเตเดฐเต†เดกเดฟเตฝ เด…เดคเดฟเดจเตเดฑเต† เดนเดพเตปเดกเตโ€Œเดฒเตผ เดตเดฟเดณเดฟเด•เตเด•เดชเตเดชเต†เดŸเตเด‚.

System.Threading.Timer

เดชเต‚เดณเดฟเตฝ เดจเดฟเดจเตเดจเตเดณเตเดณ เด’เดฐเต เดคเตเดฐเต†เดกเดฟเดฒเต‡เด•เตเด•เต เดจเดฟเตผเดตเตเดตเดนเดฃเดคเตเดคเดฟเดจเดพเดฏเดฟ เด’เดฐเต เดชเตเดฐเดคเดฟเดจเดฟเดงเดฟเดฏเต† เด…เดฏเดฏเตโ€Œเด•เตเด•เตเดจเตเดจเดคเดฟเดจเต เดคเดฟเด•เดšเตเดšเตเด‚ เดตเดฟเดšเดฟเดคเตเดฐเดฎเดพเดฏ เด’เดฐเต เดฎเดพเตผเด—เดฎเตเดฃเตเดŸเต - BeginInvoke เดฐเต€เดคเดฟ.

DelegateInstance.BeginInvoke

เดฎเต‡เตฝเดชเตเดชเดฑเดžเตเดž เดชเดฒ เดฐเต€เดคเดฟเด•เดณเต†เดฏเตเด‚ เดตเดฟเดณเดฟเด•เตเด•เดพเดตเตเดจเตเดจ เดชเตเดฐเดตเตผเดคเตเดคเดจเดคเตเดคเต†เด•เตเด•เตเดฑเดฟเดšเตเดšเต เดนเตเดฐเดธเตเดตเดฎเดพเดฏเดฟ เดธเด‚เดธเดพเดฐเดฟเด•เตเด•เดพเตป เดžเดพเตป เด†เด—เตเดฐเดนเดฟเด•เตเด•เตเดจเตเดจเต - Kernel32.dll Win32 API-เตฝ เดจเดฟเดจเตเดจเตเดณเตเดณ CreateThread. เดˆ เดซเด‚เด—เตเดทเดจเต† เดตเดฟเดณเดฟเด•เตเด•เดพเตป เด’เดฐเต เดตเดดเดฟเดฏเตเดฃเตเดŸเต, เดฌเดพเดนเตเดฏ เดฐเต€เดคเดฟเด•เดณเตเดŸเต† เดฎเต†เด•เตเด•เดพเดจเดฟเดธเดคเตเดคเดฟเดจเต เดจเดจเตเดฆเดฟ. เดฒเต†เด—เดธเดฟ เด•เต‹เดกเดฟเดจเตเดฑเต† เดญเดฏเดพเดจเด•เดฎเดพเดฏ เด‰เดฆเดพเดนเดฐเดฃเดคเตเดคเดฟเตฝ เด’เดฐเดฟเด•เตเด•เตฝ เดฎเดพเดคเตเดฐเดฎเดพเดฃเต เดžเดพเตป เด…เดคเตเดคเดฐเดฎเตŠเดฐเต เด•เต‹เตพ เด•เดฃเตเดŸเดคเต, เด‡เดคเต เด•เตƒเดคเตเดฏเดฎเดพเดฏเดฟ เดšเต†เดฏเตเดค เดฐเดšเดฏเดฟเดคเดพเดตเดฟเดจเตเดฑเต† เดชเตเดฐเดšเต‹เดฆเดจเด‚ เด‡เดชเตเดชเต‹เดดเตเด‚ เดŽเดจเดฟเด•เตเด•เต เด’เดฐเต เดฐเดนเดธเตเดฏเดฎเดพเดฏเดฟ เดคเตเดŸเดฐเตเดจเตเดจเต.

Kernel32.dll CreateThread

เดคเตเดฐเต†เดกเตเด•เตพ เด•เดพเดฃเตเด•เดฏเตเด‚ เดกเต€เดฌเด—เตเด—เตเดšเต†เดฏเตเดฏเตเด•เดฏเตเด‚ เดšเต†เดฏเตเดฏเตเดจเตเดจเต

เดจเดฟเด™เตเด™เตพ เดธเตƒเดทเตโ€ŒเดŸเดฟเดšเตเดš เดคเตเดฐเต†เดกเตเด•เดณเตเด‚ เดŽเดฒเตเดฒเดพ เดฎเต‚เดจเตเดจเดพเด‚ เด•เด•เตเดทเดฟ เด˜เดŸเด•เด™เตเด™เดณเตเด‚ .NET เดชเต‚เดณเตเด‚ เดตเดฟเดทเตเดตเตฝ เดธเตเดฑเตเดฑเตเดกเดฟเดฏเต‹เดฏเตเดŸเต† เดคเตเดฐเต†เดกเตโ€Œเดธเต เดตเดฟเตปเดกเต‹เดฏเดฟเตฝ เด•เดพเดฃเดพเดจเดพเด•เตเด‚. เด†เดชเตเดฒเดฟเด•เตเด•เต‡เดทเตป เดกเต€เดฌเด—เตเด—เดฟเดจเต เด•เต€เดดเดฟเดฒเตเด‚ เดฌเตเดฐเต‡เด•เตเด•เต เดฎเต‹เดกเดฟเดฒเตเด‚ เด†เดฏเดฟเดฐเดฟเด•เตเด•เตเดฎเตเดชเต‹เตพ เดฎเดพเดคเตเดฐเดฎเต‡ เดˆ เดตเดฟเตปเดกเต‹ เดคเตเดฐเต†เดกเต เดตเดฟเดตเดฐเด™เตเด™เตพ เดชเตเดฐเดฆเตผเดถเดฟเดชเตเดชเดฟเด•เตเด•เตเด•เดฏเตเดณเตเดณเต‚. เด‡เดตเดฟเดŸเต† เดจเดฟเด™เตเด™เตพเด•เตเด•เต เด“เดฐเต‹ เดคเตเดฐเต†เดกเดฟเดจเตเดฑเต†เดฏเตเด‚ เดธเตเดฑเตเดฑเดพเด•เตเด•เต เดจเดพเดฎเด™เตเด™เดณเตเด‚ เดฎเตเตปเด—เดฃเดจเด•เดณเตเด‚ เดธเต—เด•เดฐเตเดฏเดชเตเดฐเดฆเดฎเดพเดฏเดฟ เด•เดพเดฃเดพเดจเตเด‚ เด’เดฐเต เดชเตเดฐเดคเตเดฏเต‡เด• เดคเตเดฐเต†เดกเดฟเดฒเต‡เด•เตเด•เต เดกเต€เดฌเด—เตเด—เดฟเด‚เด—เต เดฎเดพเดฑเตเดฑเดพเดจเตเด‚ เด•เดดเดฟเดฏเตเด‚. เดคเตเดฐเต†เดกเต เด•เตเดฒเดพเดธเดฟเดจเตเดฑเต† เดฎเตเตปเด—เดฃเดจเดพ เดชเตเดฐเต‹เดชเตเดชเตผเดŸเตเดŸเดฟ เด‰เดชเดฏเต‹เด—เดฟเดšเตเดšเต, เดจเดฟเด™เตเด™เตพเด•เตเด•เต เด’เดฐเต เดคเตเดฐเต†เดกเดฟเดจเตเดฑเต† เดฎเตเตปเด—เดฃเดจ เดธเดœเตเดœเดฎเดพเด•เตเด•เดพเตป เด•เดดเดฟเดฏเตเด‚, เดคเตเดฐเต†เดกเตเด•เตพเด•เตเด•เดฟเดŸเดฏเดฟเตฝ เดชเตเดฐเตŠเดธเดธเตผ เดธเดฎเดฏเด‚ เดตเดฟเดญเดœเดฟเด•เตเด•เตเดฎเตเดชเต‹เตพ OC, CLR เดŽเดจเตเดจเดฟเดต เด’เดฐเต เดถเตเดชเดพเตผเดถเดฏเดพเดฏเดฟ เดฎเดจเดธเตเดธเดฟเดฒเดพเด•เตเด•เตเด‚.

.NET: เดฎเตพเดŸเตเดŸเดฟเดคเตเดฐเต†เดกเดฟเด‚เด—เตเด‚ เด…เดธเดฟเตปเด•เตเดฐเดฃเดฟเดฏเตเด‚ เด‰เดชเดฏเต‹เด—เดฟเดšเตเดšเต เดชเตเดฐเดตเตผเดคเตเดคเดฟเด•เตเด•เตเดจเตเดจเดคเดฟเดจเตเดณเตเดณ เด‰เดชเด•เดฐเดฃเด™เตเด™เตพ. เดญเดพเด—เด‚ 1

เดŸเดพเดธเตเด•เต เดชเดพเดฐเดฒเตฝ เดฒเตˆเดฌเตเดฐเดฑเดฟ

เดŸเดพเดธเตเด•เต เดชเดพเดฐเดฒเตฝ เดฒเตˆเดฌเตเดฐเดฑเดฟ (TPL) .NET 4.0-เตฝ เด…เดตเดคเดฐเดฟเดชเตเดชเดฟเดšเตเดšเต. เด‡เดชเตเดชเต‹เตพ เด‡เดคเต เด…เดธเดฟเตปเด•เตเดฐเดฃเดฟเดฏเต‹เดŸเตŠเดชเตเดชเด‚ เดชเตเดฐเดตเตผเดคเตเดคเดฟเด•เตเด•เตเดจเตเดจเดคเดฟเดจเตเดณเตเดณ เดธเตเดฑเตเดฑเดพเตปเดกเต‡เตผเดกเตเด‚ เดชเตเดฐเดงเดพเดจ เด‰เดชเด•เดฐเดฃเดตเตเดฎเดพเดฃเต. เดชเดดเดฏ เดธเดฎเต€เดชเดจเด‚ เด‰เดชเดฏเต‹เด—เดฟเด•เตเด•เตเดจเตเดจ เดเดคเตŠเดฐเต เด•เต‹เดกเตเด‚ เดชเดพเดฐเดฎเตเดชเดฐเตเดฏเดฎเดพเดฏเดฟ เด•เดฃเด•เตเด•เดพเด•เตเด•เดชเตเดชเต†เดŸเตเดจเตเดจเต. System.Threading.Tasks เดจเต†เดฏเดฟเด‚เดธเตโ€Œเดชเต‡เดธเดฟเตฝ เดจเดฟเดจเตเดจเตเดณเตเดณ เดŸเดพเดธเตโ€Œเด•เต เด•เตเดฒเดพเดธเดพเดฃเต TPL-เดจเตเดฑเต† เด…เดŸเดฟเดธเตเดฅเดพเดจ เดฏเต‚เดฃเดฟเดฑเตเดฑเต. เด’เดฐเต เดคเตเดฐเต†เดกเดฟเดจเต เดฎเตเด•เดณเดฟเดฒเตเดณเตเดณ เด…เดฎเต‚เตผเดคเตเดคเต€เด•เดฐเดฃเดฎเดพเดฃเต เดŸเดพเดธเตเด•เต. C# เดญเดพเดทเดฏเตเดŸเต† เดชเตเดคเดฟเดฏ เดชเดคเดฟเดชเตเดชเต เด‰เดชเดฏเต‹เด—เดฟเดšเตเดšเต, เดŸเดพเดธเตโ€Œเด•เตเด•เตเด•เตพเด•เตเด•เตŠเดชเตเดชเด‚ เดชเตเดฐเดตเตผเดคเตเดคเดฟเด•เตเด•เดพเดจเตเดณเตเดณ เด’เดฐเต เด—เด‚เดญเต€เดฐเดฎเดพเดฏ เดฎเดพเตผเด—เด‚ เดžเด™เตเด™เตพเด•เตเด•เต เดฒเดญเดฟเดšเตเดšเต - async/waiit operators. เดˆ เด†เดถเดฏเด™เตเด™เตพ เด…เดธเดฎเดจเตเดตเดฟเดค เด•เต‹เดกเต เดฒเดณเดฟเดคเดตเตเด‚ เดธเดฎเดจเตเดตเดฏเดฎเตเดณเตเดณเดคเตเดฎเดพเดฏเดฟ เดŽเดดเตเดคเตเดจเตเดจเดคเต เดธเดพเดงเตเดฏเดฎเดพเด•เตเด•เดฟ, เด‡เดคเต เดคเตเดฐเต†เดกเตเด•เดณเตเดŸเต† เด†เดจเตเดคเดฐเดฟเด• เดชเตเดฐเดตเตผเดคเตเดคเดจเด™เตเด™เดณเต†เด•เตเด•เตเดฑเดฟเดšเตเดšเต เด•เดพเดฐเตเดฏเดฎเดพเดฏ เดงเดพเดฐเดฃเดฏเดฟเดฒเตเดฒเดพเดคเตเดค เด†เดณเตเด•เตพเด•เตเด•เต เดชเต‹เดฒเตเด‚ เด…เดต เด‰เดชเดฏเต‹เด—เดฟเด•เตเด•เตเดจเตเดจ เด†เดชเตเดฒเดฟเด•เตเด•เต‡เดทเดจเตเด•เตพ เดŽเดดเตเดคเตเดจเตเดจเดคเต เดธเดพเดงเตเดฏเดฎเดพเด•เตเด•เดฟ. async/wait เด‰เดชเดฏเต‹เด—เดฟเด•เตเด•เตเดจเตเดจเดคเต เด’เดจเตเดจเต‹ เด…เดคเดฟเดฒเดงเดฟเด•เดฎเต‹ เดฒเต‡เด–เดจเด™เตเด™เตพเด•เตเด•เตเดณเตเดณ เด’เดฐเต เดตเดฟเดทเดฏเดฎเดพเดฃเต, เดŽเดจเตเดจเดพเตฝ เด…เดคเดฟเดจเตเดฑเต† เดธเดพเดฐเดพเด‚เดถเด‚ เด•เตเดฑเดšเตเดšเต เดตเดพเด•เตเดฏเด™เตเด™เดณเดฟเตฝ เด•เดฃเตเดŸเต†เดคเตเดคเดพเตป เดžเดพเตป เดถเตเดฐเดฎเดฟเด•เตเด•เตเด‚:

  • async เดŽเดจเตเดจเดคเต เดŸเดพเดธเตเด•เต เด…เดฒเตเดฒเต†เด™เตเด•เดฟเตฝ เดถเต‚เดจเตเดฏเดค เดคเดฟเดฐเดฟเด•เต† เดจเตฝเด•เตเดจเตเดจ เด’เดฐเต เดฐเต€เดคเดฟเดฏเตเดŸเต† เดฎเต‹เดกเดฟเดซเดฏเดฑเดพเดฃเต
  • เด•เต‚เดŸเดพเดคเต† await เด’เดฐเต เดจเต‹เตบ-เดฌเตเดฒเต‹เด•เตเด•เดฟเด‚เด—เต เดŸเดพเดธเตโ€Œเด•เต เดตเต†เดฏเดฟเดฑเตเดฑเดฟเด‚เด—เต เด“เดชเตเดชเดฑเต‡เดฑเตเดฑเดฑเดพเดฃเต.

เด’เดฐเดฟเด•เตเด•เตฝ เด•เต‚เดŸเดฟ: เดตเต†เดฏเดฟเดฑเตเดฑเต เด“เดชเตเดชเดฑเต‡เดฑเตเดฑเตผ, เดชเตŠเดคเตเดตเดพเดฏ เดธเดพเดนเดšเดฐเตเดฏเดคเตเดคเดฟเตฝ (เด’เดดเดฟเดตเดพเด•เตเด•เดฒเตเด•เตพ เด‰เดฃเตเดŸเต), เดจเดฟเดฒเดตเดฟเดฒเต† เดŽเด•เตเดธเดฟเด•เตเดฏเต‚เดทเตป เดคเตเดฐเต†เดกเต เด•เต‚เดŸเตเดคเตฝ เดฑเดฟเดฒเต€เดธเต เดšเต†เดฏเตเดฏเตเด‚, เดŸเดพเดธเตเด•เต เด…เดคเดฟเดจเตเดฑเต† เดจเดฟเตผเดตเตเดตเดนเดฃเด‚ เดชเต‚เตผเดคเตเดคเดฟเดฏเดพเด•เตเดฎเตเดชเต‹เตพ, เดคเตเดฐเต†เดกเต (เดตเดพเดธเตเดคเดตเดคเตเดคเดฟเตฝ, เดธเดจเตเดฆเตผเดญเด‚ เดชเดฑเดฏเตเดจเตเดจเดคเต เด•เต‚เดŸเตเดคเตฝ เดถเดฐเดฟเดฏเดพเดฏเดฟเดฐเดฟเด•เตเด•เตเด‚. , เดŽเดจเตเดจเดพเตฝ เดชเดฟเดจเตเดจเต€เดŸเต เด…เดคเดฟเดจเต†เด•เตเด•เตเดฑเดฟเดšเตเดšเต เด•เต‚เดŸเตเดคเตฝ) เดˆ เดฐเต€เดคเดฟ เด•เต‚เดŸเตเดคเตฝ เดจเดŸเดชเตเดชเดฟเดฒเดพเด•เตเด•เตเดจเตเดจเดคเต เดคเตเดŸเดฐเตเด‚. .NET-เดจเตเดณเตเดณเดฟเตฝ, เดˆ เดธเด‚เดตเดฟเดงเดพเดจเด‚ เดตเดฟเดณเดตเต เดฑเดฟเดŸเตเดŸเต‡เตบ เดชเต‹เดฒเต† เดคเดจเตเดจเต† เดจเดŸเดชเตเดชเดฟเดฒเดพเด•เตเด•เตเดจเตเดจเต, เดŽเดดเตเดคเดฟเดฏ เดฐเต€เดคเดฟ เด’เดฐเต เดฎเตเดดเตเดตเตป เด•เตเดฒเดพเดธเดพเดฏเดฟ เดฎเดพเดฑเตเดฎเตเดชเต‹เตพ, เด‡เดคเต เด’เดฐเต เดธเด‚เดธเตเดฅเดพเดจ เดฏเดจเตเดคเตเดฐเดฎเดพเดฃเต, เดˆ เด…เดตเดธเตเดฅเด•เดณเต† เด†เดถเตเดฐเดฏเดฟเดšเตเดšเต เดชเตเดฐเดคเตเดฏเต‡เด• เด•เดทเดฃเด™เตเด™เดณเดพเดฏเดฟ เดจเดŸเดชเตเดชเดฟเดฒเดพเด•เตเด•เดพเตป เด•เดดเดฟเดฏเตเด‚. เดคเดพเตฝเดชเตเดชเดฐเตเดฏเดฎเตเดณเตเดณ เด†เตผเด•เตเด•เตเด‚ เด•เด‚เดชเตˆเดฒเตผ เดœเดจเดฑเต‡เดฑเตเดฑเดกเต เด•เต‹เดกเต เดชเตเดฐเดตเตผเดคเตเดคเดจเด•เตเดทเดฎเดฎเดพเด•เตเด•เดฟ เดœเต†เดฑเตเดฑเต เดฌเตเดฐเต†เดฏเดฟเตปเดธเต เดกเต‹เดŸเตเดŸเตเดชเต€เด•เตเด•เต เด‰เดชเดฏเต‹เด—เดฟเดšเตเดšเต เด…เดธเด‚เดฌเตเดฒเดฟ, เด…เดธเด‚เดฌเตเดฒเดฟ/เดตเต†เดฏเตเดฑเตเดฑเต เด‰เดชเดฏเต‹เด—เดฟเดšเตเดšเต เดเดคเต†เด™เตเด•เดฟเดฒเตเด‚ เดฒเดณเดฟเดคเดฎเดพเดฏ เด•เต‹เดกเต เดŽเดดเตเดคเดพเดจเตเด‚ เด•เด‚เดชเตˆเตฝ เดšเต†เดฏเตเดฏเดพเดจเตเด‚ เด•เดพเดฃเดพเดจเตเด‚ เด•เดดเดฟเดฏเตเด‚.

เด’เดฐเต เดŸเดพเดธเตเด•เต เดธเดฎเดพเดฐเด‚เดญเดฟเด•เตเด•เตเดจเตเดจเดคเดฟเดจเตเด‚ เด‰เดชเดฏเต‹เด—เดฟเด•เตเด•เตเดจเตเดจเดคเดฟเดจเตเดฎเตเดณเตเดณ เด“เดชเตเดทเดจเตเด•เตพ เดจเต‹เด•เตเด•เดพเด‚. เดšเตเดตเดŸเต†เดฏเตเดณเตเดณ เด•เต‹เดกเต เด‰เดฆเดพเดนเดฐเดฃเดคเตเดคเดฟเตฝ, เด‰เดชเดฏเต‹เด—เดชเตเดฐเดฆเดฎเดพเดฏ เด’เดจเตเดจเตเด‚ เดšเต†เดฏเตเดฏเดพเดคเตเดค เด’เดฐเต เดชเตเดคเดฟเดฏ เดŸเดพเดธเตโ€Œเด•เต เดžเด™เตเด™เตพ เดธเตƒเดทเตโ€ŒเดŸเดฟเด•เตเด•เตเดจเตเดจเต (เดคเตเดฐเต†เดกเต.เดธเตเดฒเต€เดชเตเดชเต(10000)), เดŽเดจเตเดจเดพเตฝ เดฏเดฅเดพเตผเดคเตเดฅ เดœเต€เดตเดฟเดคเดคเตเดคเดฟเตฝ เด‡เดคเต เดšเดฟเดฒ เดธเด™เตเด•เต€เตผเดฃเตเดฃเดฎเดพเดฏ CPU-เดคเต€เดตเตเดฐเดฎเดพเดฏ เดœเต‹เดฒเดฟเดฏเดพเดฏเดฟเดฐเดฟเด•เตเด•เดฃเด‚.

using TCO = System.Threading.Tasks.TaskCreationOptions;

public static async void VoidAsyncMethod() {
    var cancellationSource = new CancellationTokenSource();

    await Task.Factory.StartNew(
        // Code of action will be executed on other context
        () => Thread.Sleep(10000),
        cancellationSource.Token,
        TCO.LongRunning | TCO.AttachedToParent | TCO.PreferFairness,
        scheduler
    );

    //  Code after await will be executed on captured context
}

เดจเดฟเดฐเดตเดงเดฟ เด“เดชเตเดทเดจเตเด•เตพ เด‰เดชเดฏเต‹เด—เดฟเดšเตเดšเต เด’เดฐเต เดŸเดพเดธเตเด•เต เดธเตƒเดทเตเดŸเดฟเด•เตเด•เดชเตเดชเต†เดŸเตเดจเตเดจเต:

  • เดŸเดพเดธเตโ€Œเด•เต เดตเต‡เด—เดคเตเดคเดฟเตฝ เดชเต‚เตผเดคเตเดคเดฟเดฏเดพเด•เดฟเดฒเตเดฒ เดŽเดจเตเดจเดคเดฟเดจเตเดฑเต† เดธเต‚เดšเดจเดฏเดพเดฃเต เดฒเต‹เด‚เด—เต เดฑเดฃเตเดฃเดฟเด‚เด—เต, เด…เดคเดฟเดจเตผเดคเตเดฅเด‚ เดชเต‚เดณเดฟเตฝ เดจเดฟเดจเตเดจเต เด’เดฐเต เดคเตเดฐเต†เดกเต เดŽเดŸเตเด•เตเด•เดพเดคเต†, เดฎเดฑเตเดฑเตเดณเตเดณเดตเดฐเต† เด‰เดชเดฆเตเดฐเดตเดฟเด•เตเด•เดพเดคเดฟเดฐเดฟเด•เตเด•เดพเตป เดˆ เดŸเดพเดธเตโ€Œเด•เตเด•เดฟเดจเดพเดฏเดฟ เดชเตเดฐเดคเตเดฏเต‡เด•เด‚ เดธเตƒเดทเตโ€ŒเดŸเดฟเด•เตเด•เตเดจเตเดจเดคเต เดชเดฐเดฟเด—เดฃเดฟเด•เตเด•เตเดจเตเดจเดคเต เดฎเต‚เดฒเตเดฏเดตเดคเตเดคเดพเดฃเต.
  • AttachedToParent - เดšเตเดฎเดคเดฒเด•เตพ เด’เดฐเต เดถเตเดฐเต‡เดฃเดฟเดฏเดฟเตฝ เด•เตเดฐเดฎเต€เด•เดฐเดฟเด•เตเด•เดพเด‚. เดˆ เด“เดชเตโ€Œเดทเตป เด‰เดชเดฏเต‹เด—เดฟเดšเตเดšเดฟเดŸเตเดŸเตเดฃเตเดŸเต†เด™เตเด•เดฟเตฝ, เดŸเดพเดธเตโ€Œเด•เต เด…เดคเต เดคเดจเตเดจเต† เดชเต‚เตผเดคเตเดคเดฟเดฏเดพเด•เตเด•เดฟ เด•เตเดŸเตเดŸเดฟเด•เดณเตเดŸเต† เดจเดฟเตผเดตเตเดตเดนเดฃเดคเตเดคเดฟเดจเดพเดฏเดฟ เด•เดพเดคเตเดคเดฟเดฐเดฟเด•เตเด•เตเดจเตเดจ เด…เดตเดธเตเดฅเดฏเดฟเดฒเดพเดฏเดฟเดฐเดฟเด•เตเด•เดพเด‚.
  • เดชเตเดฐเดฟเดซเตผเดซเต†เดฏเตผเดจเต†เดธเต - เดจเดฟเตผเดตเตเดตเดนเดฃเดคเตเดคเดฟเดจเดพเดฏเดฟ เด…เดฏเดšเตเดš เดŸเดพเดธเตโ€Œเด•เตเด•เตเด•เตพ เดชเดฟเดจเตเดจเต€เดŸเต เด…เดฏเดฏเตโ€Œเด•เตเด•เตเดจเตเดจเดคเดฟเดจเต เดฎเตเดฎเตเดชเต เดŽเด•เตโ€Œเดธเดฟเด•เตเดฏเต‚เดŸเตเดŸเต เดšเต†เดฏเตเดฏเตเดจเตเดจเดคเดพเดฃเต เดจเดฒเตเดฒเดคเต เดŽเดจเตเดจเดพเดฃเต เด…เตผเดคเตเดฅเดฎเดพเด•เตเด•เตเดจเตเดจเดคเต. เดŽเดจเตเดจเดพเตฝ เด‡เดคเต เด’เดฐเต เดถเตเดชเดพเตผเดถ เดฎเดพเดคเตเดฐเดฎเดพเดฃเต, เดซเดฒเด™เตเด™เตพ เด‰เดฑเดชเตเดชเตเดจเตฝเด•เตเดจเตเดจเดฟเดฒเตเดฒ.

เดฐเต€เดคเดฟเดฏเดฟเดฒเต‡เด•เตเด•เต เด•เตˆเดฎเดพเดฑเดฟเดฏ เดฐเดฃเตเดŸเดพเดฎเดคเตเดคเต† เดชเดพเดฐเดพเดฎเต€เดฑเตเดฑเตผ CancellationToken เด†เดฃเต. เด’เดฐเต เด“เดชเตเดชเดฑเต‡เดทเตป เด†เดฐเด‚เดญเดฟเดšเตเดšเดคเดฟเดจเต เดถเต‡เดทเด‚ เด…เดคเต เดฑเดฆเตเดฆเดพเด•เตเด•เตเดจเตเดจเดคเต เดถเดฐเดฟเดฏเดพเดฏเดฟ เด•เตˆเด•เดพเดฐเตเดฏเด‚ เดšเต†เดฏเตเดฏเดพเตป, เดŽเด•เตเดธเดฟเด•เตเดฏเต‚เดŸเตเดŸเต เดšเต†เดฏเตเดฏเตเดจเตเดจ เด•เต‹เดกเต CancellationToken เดจเดฟเดฒเดฏเตเด•เตเด•เตเดณเตเดณ เดšเต†เด•เตเด•เตเด•เตพ เด•เตŠเดฃเตเดŸเต เดชเต‚เดฐเดฟเดชเตเดชเดฟเด•เตเด•เดฃเด‚. เดชเดฐเดฟเดถเต‹เดงเดจเด•เดณเตŠเดจเตเดจเตเด‚ เด‡เดฒเตเดฒเต†เด™เตเด•เดฟเตฝ, CancellationTokenSource เด’เดฌเตโ€Œเดœเด•เตโ€Œเดฑเตเดฑเดฟเตฝ เดตเดฟเดณเดฟเด•เตเด•เตเดจเตเดจ เดฑเดฆเตเดฆเดพเด•เตเด•เตฝ เดฐเต€เดคเดฟเด•เตเด•เต เดŸเดพเดธเตโ€Œเด•เต เด†เดฐเด‚เดญเดฟเด•เตเด•เตเดจเตเดจเดคเดฟเดจเต เดฎเตเดฎเตเดชเต เดฎเดพเดคเตเดฐเดฎเต‡ เด…เดคเดฟเดจเตเดฑเต† เดจเดฟเตผเดตเตเดตเดนเดฃเด‚ เดจเดฟเตผเดคเตเดคเดพเตป เด•เดดเดฟเดฏเต‚.

เดŸเดพเดธเตเด•เต เดทเต†เดกเตเดฏเต‚เดณเตผ เดŽเดจเตเดจ เดคเดฐเดคเตเดคเดฟเดจเตเดฑเต† เดทเต†เดกเตเดฏเต‚เดณเตผ เด’เดฌเตเดœเด•เตเดฑเตเดฑเดพเดฃเต เด…เดตเดธเดพเดจ เดชเดพเดฐเดพเดฎเต€เดฑเตเดฑเตผ. เดคเตเดฐเต†เดกเตเด•เดณเดฟเดฒเตเดŸเดจเต€เดณเด‚ เดŸเดพเดธเตโ€Œเด•เตเด•เตเด•เตพ เดตเดฟเดคเดฐเดฃเด‚ เดšเต†เดฏเตเดฏเตเดจเตเดจเดคเดฟเดจเตเดณเตเดณ เดคเดจเตเดคเตเดฐเด™เตเด™เตพ เดจเดฟเดฏเดจเตเดคเตเดฐเดฟเด•เตเด•เตเดจเตเดจเดคเดฟเดจเดพเดฃเต เดˆ เด•เตเดฒเดพเดธเตเด‚ เด…เดคเดฟเดจเตเดฑเต† เดชเดฟเตปเด—เดพเดฎเดฟเด•เดณเตเด‚ เดฐเต‚เดชเด•เตฝเดชเตเดชเดจ เดšเต†เดฏเตโ€Œเดคเดฟเดฐเดฟเด•เตเด•เตเดจเตเดจเดคเต; เดธเตเดฅเดฟเดฐเดธเตเดฅเดฟเดคเดฟเดฏเดพเดฏเดฟ, เดชเต‚เดณเดฟเตฝ เดจเดฟเดจเตเดจเตเดณเตเดณ เด’เดฐเต เดฑเดพเตปเดกเด‚ เดคเตเดฐเต†เดกเดฟเตฝ เดŸเดพเดธเตโ€Œเด•เต เดŽเด•เตโ€Œเดธเดฟเด•เตเดฏเต‚เดŸเตเดŸเต เดšเต†เดฏเตเดฏเดชเตเดชเต†เดŸเตเด‚.

เดตเต†เดฏเดฟเดฑเตเดฑเต เด“เดชเตเดชเดฑเต‡เดฑเตเดฑเตผ เดธเตƒเดทเตโ€ŒเดŸเดฟเดšเตเดš เดŸเดพเดธเตโ€Œเด•เตเด•เดฟเดฒเต‡เด•เตเด•เต เดชเตเดฐเดฏเต‹เด—เดฟเด•เตเด•เตเดจเตเดจเต, เด…เดคเดฟเดจเตผเดคเตเดฅเด‚ เด…เดคเดฟเดจเต เดถเต‡เดทเด‚ เดŽเดดเตเดคเดฟเดฏ เด•เต‹เดกเต, เด’เดจเตเดจเต เด‰เดฃเตเดŸเต†เด™เตเด•เดฟเตฝ, เด•เดพเดคเตเดคเดฟเดฐเดฟเด•เตเด•เตเดจเตเดจเดคเดฟเดจเต เดฎเตเดฎเตเดชเตเดณเตเดณ เด•เต‹เดกเดฟเดจเตเดฑเต† เด…เดคเต‡ เดธเดจเตเดฆเตผเดญเดคเตเดคเดฟเตฝ (เดชเดฒเดชเตเดชเต‹เดดเตเด‚ เด‡เดคเต เด’เดฐเต‡ เดคเตเดฐเต†เดกเดฟเตฝ) เดŽเด•เตโ€Œเดธเดฟเด•เตเดฏเต‚เดŸเตเดŸเต เดšเต†เดฏเตเดฏเดชเตเดชเต†เดŸเตเด‚.

เดˆ เดฐเต€เดคเดฟ เด…เดธเดฟเตปเด•เต เดถเต‚เดจเตเดฏเดฎเดพเดฏเดฟ เด…เดŸเดฏเดพเดณเดชเตเดชเต†เดŸเตเดคเตเดคเดฟเดฏเดฟเดฐเดฟเด•เตเด•เตเดจเตเดจเต, เด…เดคเดฟเดจเตผเดคเตเดฅเด‚ เด‡เดคเดฟเดจเต เดตเต†เดฏเดฟเดฑเตเดฑเต เด“เดชเตเดชเดฑเต‡เดฑเตเดฑเตผ เด‰เดชเดฏเต‹เด—เดฟเด•เตเด•เดพเดฎเต†เดจเตเดจเดพเดฃเต, เดŽเดจเตเดจเดพเตฝ เด•เต‹เดณเดฟเด‚เด—เต เด•เต‹เดกเดฟเดจเต เดจเดฟเตผเดตเตเดตเดนเดฃเดคเตเดคเดฟเดจเดพเดฏเดฟ เด•เดพเดคเตเดคเดฟเดฐเดฟเด•เตเด•เดพเดจเดพเดตเดฟเดฒเตเดฒ. เด…เดคเตเดคเดฐเดฎเตŠเดฐเต เดธเดตเดฟเดถเต‡เดทเดค เด†เดตเดถเตเดฏเดฎเดพเดฃเต†เด™เตเด•เดฟเตฝ, เดฐเต€เดคเดฟ เดŸเดพเดธเตเด•เต เดคเดฟเดฐเดฟเด•เต† เดจเตฝเด•เดฃเด‚. เด…เดธเดฟเตปเด•เต เดถเต‚เดจเตเดฏเดฎเดพเดฏเดฟ เด…เดŸเดฏเดพเดณเดชเตเดชเต†เดŸเตเดคเตเดคเดฟเดฏ เดฐเต€เดคเดฟเด•เตพ เดตเดณเดฐเต† เดธเดพเดงเดพเดฐเดฃเดฎเดพเดฃเต: เดšเดŸเตเดŸเด‚ เดชเต‹เดฒเต†, เด‡เดต เด‡เดตเดจเตเดฑเต เดนเดพเตปเดกเตโ€Œเดฒเดฑเตเด•เตพ เด…เดฒเตเดฒเต†เด™เตเด•เดฟเตฝ เดคเต€เดฏเดฟเตฝ เดชเตเดฐเดตเตผเดคเตเดคเดฟเด•เตเด•เตเดจเตเดจ เดฎเดฑเตเดฑเต เดฐเต€เดคเดฟเด•เดณเดพเดฃเต, เดคเดคเตเดตเด‚ เดฎเดฑเด•เตเด•เตเด•. เดจเดฟเตผเดตเตเดตเดนเดฃเดคเตเดคเดฟเดจเตเดฑเต† เด…เดตเดธเดพเดจเด‚ เดตเดฐเต† เด•เดพเดคเตเดคเดฟเดฐเดฟเด•เตเด•เดพเตป เดจเดฟเด™เตเด™เตพเด•เตเด•เต เด…เดตเดธเดฐเด‚ เดจเตฝเด•เต‡เดฃเตเดŸเดคเดฒเตเดฒ, เดซเดฒเด‚ เดคเดฟเดฐเดฟเด•เต† เดจเตฝเด•เต‡เดฃเตเดŸเดคเตเดฃเตเดŸเต†เด™เตเด•เดฟเตฝ, เดจเดฟเด™เตเด™เตพ เดŸเดพเดธเตเด•เต เด‰เดชเดฏเต‹เด—เดฟเด•เตเด•เต‡เดฃเตเดŸเดคเตเดฃเตเดŸเต.

StartNew เดฐเต€เดคเดฟ เดคเดฟเดฐเดฟเด•เต† เดจเตฝเด•เดฟเดฏ เดŸเดพเดธเตโ€Œเด•เตเด•เดฟเดฒเตเด‚ เดฎเดฑเตเดฑเต‡เดคเตŠเดฐเต เด•เดพเดฐเตเดฏเดคเตเดคเดฟเดฒเตเด‚, เดจเดฟเด™เตเด™เตพเด•เตเด•เต ConfigureAwait เดฐเต€เดคเดฟ เดคเต†เดฑเตเดฑเดพเดฏ เดชเดพเดฐเดพเดฎเต€เดฑเตเดฑเตผ เด‰เดชเดฏเต‹เด—เดฟเดšเตเดšเต เดตเดฟเดณเดฟเด•เตเด•เดพเด‚, เดคเตเดŸเตผเดจเตเดจเต เด•เดพเดคเตเดคเดฟเดฐเดฟเดชเตเดชเดฟเดจเต เดถเต‡เดทเดฎเตเดณเตเดณ เดŽเด•เตโ€Œเดธเดฟเด•เตเดฏเต‚เดทเตป เด•เตเดฏเดพเดชเตโ€Œเดšเตผ เดšเต†เดฏเตโ€Œเดค เดธเดจเตเดฆเตผเดญเดคเตเดคเดฟเดฒเดฒเตเดฒ, เดฎเดฑเดฟเดšเตเดšเต เดเด•เดชเด•เตเดทเต€เดฏเดฎเดพเดฏ เด’เดจเตเดจเดฟเตฝ เดคเตเดŸเดฐเตเด‚. เด•เดพเดคเตเดคเดฟเดฐเดฟเดชเตเดชเดฟเดจเต เดถเต‡เดทเด‚ เด•เต‹เดกเดฟเดจเต เดจเดฟเตผเดตเตเดตเดนเดฃ เดธเดจเตเดฆเตผเดญเด‚ เดชเตเดฐเดงเดพเดจเดฎเดฒเตเดฒเดพเดคเตเดคเดชเตเดชเต‹เตพ เด‡เดคเต เดŽเดฒเตเดฒเดพเดฏเตเดชเตเดชเต‹เดดเตเด‚ เดšเต†เดฏเตเดฏเดฃเด‚. เด’เดฐเต เดฒเตˆเดฌเตเดฐเดฑเดฟเดฏเดฟเตฝ เดชเดพเด•เตเด•เต‡เดœเตเดšเต†เดฏเตโ€Œเดคเต เดตเดฟเดคเดฐเดฃเด‚ เดšเต†เดฏเตเดฏเตเดจเตเดจ เด•เต‹เดกเต เดŽเดดเตเดคเตเดฎเตเดชเต‹เตพ MS-เตฝ เดจเดฟเดจเตเดจเตเดณเตเดณ เดถเตเดชเดพเตผเดถ เด•เต‚เดŸเดฟเดฏเดพเดฃเดฟเดคเต.

เด’เดฐเต เดŸเดพเดธเตโ€Œเด•เต เดชเต‚เตผเดคเตเดคเดฟเดฏเดพเด•เตเดจเตเดจเดคเตเดตเดฐเต† เดจเดฟเด™เตเด™เตพเด•เตเด•เต เดŽเด™เตเด™เดจเต† เด•เดพเดคเตเดคเดฟเดฐเดฟเด•เตเด•เดพเด‚ เดŽเดจเตเดจเดคเดฟเดจเต†เด•เตเด•เตเดฑเดฟเดšเตเดšเต เด•เตเดฑเดšเตเดšเตเด•เต‚เดŸเดฟ เดšเดฟเดจเตเดคเดฟเด•เตเด•เดพเด‚. เด•เต‹เดกเดฟเดจเตเดฑเต† เด’เดฐเต เด‰เดฆเดพเดนเดฐเดฃเด‚ เดšเตเดตเดŸเต†เดฏเตเดฃเตเดŸเต, เดชเตเดฐเดคเต€เด•เตเดทเด•เตพ เดธเต‹เดชเดพเดงเดฟเด•เดฎเดพเดฏเดฟ เดšเต†เดฏเตเดฏเตเดฎเตเดชเต‹เตพ เด…เดคเต เดธเต‹เดชเดพเดงเดฟเด•เดฎเดพเดฏเดฟ เดฎเต‹เดถเดฎเดพเดฏเดฟ เดšเต†เดฏเตเดฏเดชเตเดชเต†เดŸเตเดฎเตเดชเต‹เตพ เด…เดญเดฟเดชเตเดฐเดพเดฏเด™เตเด™เตพ เด‰เดฃเตเดŸเต.

public static async void AnotherMethod() {

    int result = await AsyncMethod(); // good

    result = AsyncMethod().Result; // bad

    AsyncMethod().Wait(); // bad

    IEnumerable<Task> tasks = new Task[] {
        AsyncMethod(), OtherAsyncMethod()
    };

    await Task.WhenAll(tasks); // good
    await Task.WhenAny(tasks); // good

    Task.WaitAll(tasks.ToArray()); // bad
}

เด†เดฆเตเดฏ เด‰เดฆเดพเดนเดฐเดฃเดคเตเดคเดฟเตฝ, เด•เต‹เดณเดฟเด‚เด—เต เดคเตเดฐเต†เดกเต เดคเดŸเดฏเดพเดคเต† เดŸเดพเดธเตโ€Œเด•เต เดชเต‚เตผเดคเตเดคเดฟเดฏเดพเด•เตเดจเตเดจเดคเตเดตเดฐเต† เดžเด™เตเด™เตพ เด•เดพเดคเตเดคเดฟเดฐเดฟเด•เตเด•เตเดจเตเดจเต; เดซเดฒเด‚ เด‡เดคเดฟเดจเด•เด‚ เด‰เดณเตเดณเดชเตเดชเต‹เตพ เดฎเดพเดคเตเดฐเดฎเต‡ เดžเด™เตเด™เตพ เด…เดคเต เดชเตเดฐเต‹เดธเดธเตเดธเต เดšเต†เดฏเตเดฏเตเดจเตเดจเดคเดฟเดฒเต‡เด•เตเด•เต เดฎเดŸเด™เตเด™เตเด•เดฏเตเดณเตเดณเต‚; เด…เดคเตเดตเดฐเต†, เด•เต‹เดณเดฟเด‚เด—เต เดคเตเดฐเต†เดกเต เด…เดคเดฟเดจเตเดฑเต† เดธเตเดตเดจเตเดคเด‚ เด‰เดชเด•เดฐเดฃเด™เตเด™เดณเดฟเตฝ เด…เดตเดถเต‡เดทเดฟเด•เตเด•เตเดจเตเดจเต.

เดฐเดฃเตเดŸเดพเดฎเดคเตเดคเต† เด“เดชเตเดทเดจเดฟเตฝ, เดฐเต€เดคเดฟเดฏเตเดŸเต† เดซเดฒเด‚ เด•เดฃเด•เตเด•เดพเด•เตเด•เตเดจเตเดจเดคเต เดตเดฐเต† เดžเด™เตเด™เตพ เด•เต‹เดณเดฟเด‚เด—เต เดคเตเดฐเต†เดกเต เดคเดŸเดฏเตเดจเตเดจเต. เด‡เดคเต เดฎเต‹เดถเดฎเดพเดฃเต, เด•เดพเดฐเดฃเด‚ เดชเตเดฐเต‹เด—เตเดฐเดพเดฎเดฟเดจเตเดฑเต† เด…เดคเตเดคเดฐเดฎเตŠเดฐเต เดตเดฟเดฒเดฏเต‡เดฑเดฟเดฏ เด‰เดฑเดตเดฟเดŸเด‚ เดฒเดณเดฟเดคเดฎเดพเดฏ เดจเดฟเดทเตโ€Œเด•เตเดฐเดฟเดฏเดคเตเดตเดคเตเดคเต‹เดŸเต† เดžเด™เตเด™เตพ เด•เตˆเดตเดถเดชเตเดชเต†เดŸเตเดคเตเดคเดฟเดฏเดคเดฟเดจเดพเตฝ เดฎเดพเดคเตเดฐเดฎเดฒเตเดฒ, เดžเด™เตเด™เตพ เดตเดฟเดณเดฟเด•เตเด•เตเดจเตเดจ เดฐเต€เดคเดฟเดฏเตเดŸเต† เด•เต‹เดกเดฟเตฝ เด•เดพเดคเตเดคเดฟเดฐเดฟเด•เตเด•เตเด•, เด’เดชเตเดชเด‚ เดธเดฟเตปเด•เตเดฐเตŠเดฃเตˆเดธเต‡เดทเตป เดธเดจเตเดฆเตผเดญเดคเตเดคเดฟเดจเต เดถเต‡เดทเด‚ เด•เต‹เดณเดฟเด‚เด—เต เดคเตเดฐเต†เดกเดฟเดฒเต‡เด•เตเด•เต เดฎเดŸเด™เตเด™เต‡เดฃเตเดŸเดคเต เด†เดตเดถเตเดฏเดฎเดพเดฃเต. เด•เดพเดคเตเดคเดฟเดฐเดฟเด•เตเด•เตเด•, เด…เดชเตเดชเต‹เตพ เดจเดฎเตเด•เตเด•เต เด’เดฐเต เดกเต†เดกเตโ€Œเดฒเต‹เด•เตเด•เต เดฒเดญเดฟเด•เตเด•เตเด‚: เด…เดธเดฟเตปเด•เตเดฐเดฃเดธเต เดฐเต€เดคเดฟเดฏเตเดŸเต† เดซเดฒเด‚ เด•เดฃเด•เตเด•เดพเด•เตเด•เตเดฎเตเดชเต‹เตพ เด•เต‹เดณเดฟเด‚เด—เต เดคเตเดฐเต†เดกเต เด•เดพเดคเตเดคเดฟเดฐเดฟเด•เตเด•เตเดจเตเดจเต, เด•เต‹เดณเดฟเด‚เด—เต เดคเตเดฐเต†เดกเดฟเตฝ เด…เดคเดฟเดจเตเดฑเต† เดจเดฟเตผเดตเตเดตเดนเดฃเด‚ เดคเตเดŸเดฐเดพเตป เด…เดธเดฟเตปเด•เตเดฐเดฃเดธเต เดฐเต€เดคเดฟ เดตเต†เดฑเตเดคเต† เดถเตเดฐเดฎเดฟเด•เตเด•เตเดจเตเดจเต.

เดˆ เดธเดฎเต€เดชเดจเดคเตเดคเดฟเดจเตเดฑเต† เดฎเดฑเตเดฑเตŠเดฐเต เดชเต‹เดฐเดพเดฏเตเดฎ เดธเด™เตเด•เต€เตผเดฃเตเดฃเดฎเดพเดฏ เดชเดฟเดถเด•เต เด•เตˆเด•เดพเดฐเตเดฏเด‚ เดšเต†เดฏเตเดฏเดฒเดพเดฃเต. async/waiit เด‰เดชเดฏเต‹เด—เดฟเด•เตเด•เตเดฎเตเดชเต‹เตพ เด…เดธเดฟเตปเด•เตเดฐเดฃเดธเต เด•เต‹เดกเดฟเดฒเต† เดชเดฟเดถเด•เตเด•เตพ เด•เตˆเด•เดพเดฐเตเดฏเด‚ เดšเต†เดฏเตเดฏเดพเตป เดตเดณเดฐเต† เดŽเดณเตเดชเตเดชเดฎเดพเดฃเต เดŽเดจเตเดจเดคเดพเดฃเต เดตเดธเตเดคเตเดค - เด•เต‹เดกเต เดธเดฟเตปเด•เตเดฐเดฃเดธเต เด†เดฃเต†เด™เตเด•เดฟเตฝ เด…เดต เดธเดฎเดพเดจเดฎเดพเดฃเต. เดžเด™เตเด™เตพ เด’เดฐเต เดŸเดพเดธเตโ€Œเด•เตเด•เดฟเตฝ เดธเดฟเตปเด•เตเดฐเดฃเดธเต เดตเต†เดฏเดฟเดฑเตเดฑเต เดŽเด•เตโ€Œเดธเต‹เตผเดธเดฟเดธเด‚ เดชเตเดฐเดฏเต‹เด—เดฟเด•เตเด•เตเด•เดฏเดพเดฃเต†เด™เตเด•เดฟเตฝ, เดฏเดฅเดพเตผเดคเตเดฅ เด’เดดเดฟเดตเดพเด•เตเด•เตฝ เด’เดฐเต เด…เด—เตเดฐเด—เต‡เดฑเตเดฑเต เดŽเด•เตโ€Œเดธเต†เดชเตโ€Œเดทเดจเดพเดฏเดฟ เดฎเดพเดฑเตเดจเตเดจเต, เด…เดคเดพเดฏเดคเต. เด…เดชเดตเดพเดฆเด‚ เด•เตˆเด•เดพเดฐเตเดฏเด‚ เดšเต†เดฏเตเดฏเดพเตป, เดจเดฟเด™เตเด™เตพ InnerException เดคเดฐเด‚ เดชเดฐเดฟเดถเต‹เดงเดฟเดšเตเดšเต เด’เดฐเต เด•เตเดฏเดพเดšเตเดšเต เดฌเตเดฒเต‹เด•เตเด•เดฟเดจเตเดณเตเดณเดฟเตฝ เดธเตเดตเดฏเด‚ เด’เดฐเต if เดšเต†เดฏเดฟเตป เดŽเดดเตเดคเดฃเด‚ เด…เดฒเตเดฒเต†เด™เตเด•เดฟเตฝ C# เดฒเต‹เด•เดคเตเดคเต เด•เต‚เดŸเตเดคเตฝ เดชเดฐเดฟเดšเดฟเดคเดฎเดพเดฏ เด•เตเดฏเดพเดšเตเดšเต เดฌเตเดฒเต‹เด•เตเด•เตเด•เดณเตเดŸเต† เดถเตƒเด‚เด–เดฒเดฏเตเด•เตเด•เต เดชเด•เดฐเด‚ เดจเดฟเตผเดฎเตเดฎเดฟเด•เตเด•เตเดฎเตเดชเต‹เตพ เด•เตเดฏเดพเดšเตเดšเต เด‰เดชเดฏเต‹เด—เดฟเด•เตเด•เตเด•.

เดฎเต‚เดจเตเดจเดพเดฎเดคเตเดคเต‡เดคเตเด‚ เด…เดตเดธเดพเดจเดคเตเดคเต‡เดคเตเดฎเดพเดฏ เด‰เดฆเดพเดนเดฐเดฃเด™เตเด™เดณเตเด‚ เด‡เดคเต‡ เด•เดพเดฐเดฃเดคเตเดคเดพเตฝ เดฎเต‹เดถเดฎเดพเดฏเดฟ เด…เดŸเดฏเดพเดณเดชเตเดชเต†เดŸเตเดคเตเดคเตเด•เดฏเตเด‚ เด’เดฐเต‡ เดชเตเดฐเดถเตโ€Œเดจเด™เตเด™เตพ เด‰เตพเด•เตเด•เตŠเดณเตเดณเตเด•เดฏเตเด‚ เดšเต†เดฏเตเดฏเตเดจเตเดจเต.

เด’เดฐเต เด•เต‚เดŸเตเดŸเด‚ เดŸเดพเดธเตโ€Œเด•เตเด•เตเด•เตพเด•เตเด•เดพเดฏเดฟ เด•เดพเดคเตเดคเดฟเดฐเดฟเด•เตเด•เตเดจเตเดจเดคเดฟเดจเต เดŽเดชเตเดชเต‹เตพ เดŽเดจเดฟ, เดŽเดชเตเดชเต‹เตพ เดŽเดฒเตเดฒเดพเด‚ เดฐเต€เดคเดฟเด•เตพ เดตเดณเดฐเต† เดธเต—เด•เดฐเตเดฏเดชเตเดฐเดฆเดฎเดพเดฃเต; เด…เดต เด’เดฐเต เด•เต‚เดŸเตเดŸเด‚ เดŸเดพเดธเตโ€Œเด•เตเด•เตเด•เตพ เด’เดจเตเดจเดพเดฏเดฟ เดชเตŠเดคเดฟเดฏเตเดจเตเดจเต, เด’เดจเตเดจเตเด•เดฟเตฝ เด—เตเดฐเต‚เดชเตเดชเดฟเตฝ เดจเดฟเดจเตเดจเตเดณเตเดณ เด’เดฐเต เดŸเดพเดธเตโ€Œเด•เต เด†เดฆเตเดฏเด‚ เดชเตเดฐเดตเตผเดคเตเดคเดจเด•เตเดทเดฎเดฎเดพเด•เตเดฎเตเดชเต‹เดดเต‹ เด…เดฒเตเดฒเต†เด™เตเด•เดฟเตฝ เด…เดตเดฏเต†เดฒเตเดฒเดพเด‚ เด…เดตเดฏเตเดŸเต† เดจเดฟเตผเดตเตเดตเดนเดฃเด‚ เดชเต‚เตผเดคเตเดคเดฟเดฏเดพเด•เตเดฎเตเดชเต‹เดดเต‹ เด…เดคเต เดซเดฏเตผ เดšเต†เดฏเตเดฏเตเด‚.

เดคเตเดฐเต†เดกเตเด•เตพ เดจเดฟเตผเดคเตเดคเตเดจเตเดจเต

เดตเดฟเดตเดฟเดง เด•เดพเดฐเดฃเด™เตเด™เดณเดพเตฝ, เด…เดคเต เด†เดฐเด‚เดญเดฟเดšเตเดšเดคเดฟเดจเต เดถเต‡เดทเด‚ เด’เดดเตเด•เตเด•เต เดจเดฟเตผเดคเตเดคเต‡เดฃเตเดŸเดคเต เด†เดตเดถเตเดฏเดฎเดพเดฏเดฟ เดตเดจเตเดจเต‡เด•เตเด•เดพเด‚. เด‡เดคเต เดšเต†เดฏเตเดฏเตเดจเตเดจเดคเดฟเดจเต เดจเดฟเดฐเดตเดงเดฟ เดฎเดพเตผเด—เด™เตเด™เดณเตเดฃเตเดŸเต. เดคเตเดฐเต†เดกเต เด•เตเดฒเดพเดธเดฟเดจเต เด‰เดšเดฟเดคเดฎเดพเดฏเดฟ เดชเต‡เดฐเดฟเดŸเตเดŸเดฟเดฐเดฟเด•เตเด•เตเดจเตเดจ เดฐเดฃเตเดŸเต เดฐเต€เดคเดฟเด•เดณเตเดฃเตเดŸเต: เด‰เดชเต‡เด•เตเดทเดฟเด•เตเด•เตเด• ะธ เด‡เดจเตเดฑเดฑเดชเตเดฑเตเดฑเต. เด†เดฆเตเดฏเดคเตเดคเต‡เดคเต เด‰เดชเดฏเต‹เด—เดฟเด•เตเด•เดพเตป เดถเตเดชเดพเตผเดถ เดšเต†เดฏเตเดฏเตเดจเตเดจเดฟเดฒเตเดฒ, เด•เดพเดฐเดฃเด‚ เดเดคเต†เด™เตเด•เดฟเดฒเตเด‚ เด•เตเดฐเดฎเดฐเดนเดฟเดค เดจเดฟเดฎเดฟเดทเดคเตเดคเดฟเตฝ เดตเดฟเดณเดฟเดšเตเดšเดคเดฟเดจเต เดถเต‡เดทเด‚, เดเดคเต†เด™เตเด•เดฟเดฒเตเด‚ เดจเดฟเตผเดฆเตเดฆเต‡เดถเดคเตเดคเดฟเดจเตเดฑเต† เดชเตเดฐเต‹เดธเดธเตเดธเดฟเด‚เด—เต เดธเดฎเดฏเดคเตเดคเต, เด’เดฐเต เด…เดชเดตเดพเดฆเด‚ เดŽเดฑเดฟเดฏเดชเตเดชเต†เดŸเตเด‚ ThreadAbortedException. เดเดคเต†เด™เตเด•เดฟเดฒเตเด‚ เดชเต‚เตผเดฃเตเดฃเดธเด‚เด–เตเดฏ เดตเต‡เดฐเดฟเดฏเดฌเดฟเตพ เดตเตผเดฆเตเดงเดฟเดชเตเดชเดฟเด•เตเด•เตเดฎเตเดชเต‹เตพ เด…เดคเตเดคเดฐเดฎเตŠเดฐเต เด’เดดเดฟเดตเดพเด•เตเด•เตฝ เดจเดฟเด™เตเด™เตพ เดชเตเดฐเดคเต€เด•เตเดทเดฟเด•เตเด•เตเดจเตเดจเดฟเดฒเตเดฒ, เด…เดฒเตเดฒเต‡? เดˆ เดฐเต€เดคเดฟ เด‰เดชเดฏเต‹เด—เดฟเด•เตเด•เตเดฎเตเดชเต‹เตพ, เด‡เดคเต เดตเดณเดฐเต† เดฏเดฅเดพเตผเดคเตเดฅ เดธเดพเดนเดšเดฐเตเดฏเดฎเดพเดฃเต. เด•เต‹เดกเดฟเดจเตเดฑเต† เด’เดฐเต เดชเตเดฐเดคเตเดฏเต‡เด• เดตเดฟเดญเดพเด—เดคเตเดคเดฟเตฝ เด…เดคเตเดคเดฐเด‚ เด’เดฐเต เด…เดชเดตเดพเดฆเด‚ เดธเตƒเดทเตเดŸเดฟเด•เตเด•เตเดจเตเดจเดคเดฟเตฝ เดจเดฟเดจเตเดจเต เดจเดฟเด™เตเด™เตพเด•เตเด•เต CLR-เดจเต† เดคเดŸเดฏเดฃเดฎเต†เด™เตเด•เดฟเตฝ, เดจเดฟเด™เตเด™เตพเด•เตเด•เต เด…เดคเต เด•เต‹เดณเตเด•เดณเดฟเตฝ เดชเตŠเดคเดฟเดฏเดพเดตเตเดจเตเดจเดคเดพเดฃเต. Thread.BeginCriticalRegion, เดคเตเดฐเต†เดกเต.เดŽเตปเดกเต เด•เตเดฐเดฟเดŸเตเดŸเดฟเด•เตเด•เตฝ เดฑเต€เดœเดฟเดฏเตป. เด…เดตเดธเดพเดจ เดฌเตเดฒเต‹เด•เตเด•เดฟเตฝ เดŽเดดเตเดคเดฟเดฏ เดเดคเต เด•เต‹เดกเตเด‚ เด…เดคเตเดคเดฐเด‚ เด•เต‹เดณเตเด•เดณเดฟเตฝ เดชเตŠเดคเดฟเดžเตเดžเดคเดพเดฃเต. เด‡เด•เตเด•เดพเดฐเดฃเดคเตเดคเดพเตฝ, เดซเตเดฐเต†เดฏเดฟเด‚เดตเตผเด•เตเด•เต เด•เต‹เดกเดฟเดจเตเดฑเต† เด†เดดเดคเตเดคเดฟเตฝ เดจเดฟเด™เตเด™เตพเด•เตเด•เต เด’เดฐเต เดถเต‚เดจเตเดฏเดฎเดพเดฏ เดถเตเดฐเดฎเดคเตเดคเดฟเดฒเต‚เดŸเต† เดฌเตเดฒเต‹เด•เตเด•เตเด•เตพ เด•เดฃเตเดŸเต†เดคเตเดคเดพเดจเดพเด•เตเด‚, เดชเด•เตเดทเต‡ เด’เดŸเตเดตเดฟเตฝ เดถเต‚เดจเตเดฏเดฎเดฒเตเดฒ. เดฎเตˆเด•เตเดฐเต‹เดธเต‹เดซเตเดฑเตเดฑเต เดˆ เดฐเต€เดคเดฟ เดจเดฟเดฐเตเดคเตเดธเดพเดนเดชเตเดชเต†เดŸเตเดคเตเดคเตเดจเตเดจเต, เด…เดตเตผ เด‡เดคเต .net core-เตฝ เด‰เตพเดชเตเดชเต†เดŸเตเดคเตเดคเดฟเดฏเดฟเดฒเตเดฒ.

เด‡เดจเตเดฑเดฑเดชเตเดฑเตเดฑเต เดฐเต€เดคเดฟ เด•เต‚เดŸเตเดคเตฝ เดชเตเดฐเดตเดšเดจเดพเดคเต€เดคเดฎเดพเดฏเดฟ เดชเตเดฐเดตเตผเดคเตเดคเดฟเด•เตเด•เตเดจเตเดจเต. เด‡เดคเดฟเดจเต เด’เดฐเต เด…เดชเดตเดพเดฆเด‚ เด‰เดชเดฏเต‹เด—เดฟเดšเตเดšเต เดคเตเดฐเต†เดกเดฟเดจเต† เดคเดŸเดธเตเดธเดชเตเดชเต†เดŸเตเดคเตเดคเดพเด‚ ThreadInterruptedException เดคเตเดฐเต†เดกเต เด•เดพเดคเตเดคเดฟเดฐเดฟเด•เตเด•เตเดจเตเดจ เด…เดตเดธเตเดฅเดฏเดฟเดฒเดพเดฏเดฟเดฐเดฟเด•เตเด•เตเดฎเตเดชเต‹เตพ เดฎเดพเดคเตเดฐเด‚. WaitHandle, เดฒเต‹เด•เตเด•เต, เด…เดฒเตเดฒเต†เด™เตเด•เดฟเตฝ Thread.Sleep เดŽเดจเตเดจเต เดตเดฟเดณเดฟเดšเตเดšเดคเดฟเดจเต เดถเต‡เดทเด‚ เดคเต‚เด™เตเด™เดฟเด•เตเด•เดฟเดŸเด•เตเด•เตเดฎเตเดชเต‹เตพ เด‡เดคเต เดˆ เด…เดตเดธเตเดฅเดฏเดฟเดฒเต‡เด•เตเด•เต เดชเตเดฐเดตเต‡เดถเดฟเด•เตเด•เตเดจเตเดจเต.

เดฎเตเด•เดณเดฟเตฝ เดตเดฟเดตเดฐเดฟเดšเตเดš เดฐเดฃเตเดŸเต เด“เดชเตเดทเดจเตเด•เดณเตเด‚ เด…เดตเดฏเตเดŸเต† เดชเตเดฐเดตเดšเดจเดพเดคเต€เดคเดฎเดพเดฏเดคเดฟเดจเดพเตฝ เดฎเต‹เดถเดฎเดพเดฃเต. เด’เดฐเต เด˜เดŸเดจ เด‰เดชเดฏเต‹เด—เดฟเด•เตเด•เตเด• เดŽเดจเตเดจเดคเดพเดฃเต เดชเดฐเดฟเดนเดพเดฐเด‚ เดฑเดฆเตเดฆเดพเด•เตเด•เตฝ เดŸเต‹เด•เตเด•เตบ เด•เตเดฒเดพเดธเตเด‚ CancellationTokenSource. เด•เดพเดฐเตเดฏเด‚ เด‡เดคเดพเดฃเต: CancellationTokenSource เด•เตเดฒเดพเดธเดฟเดจเตเดฑเต† เด’เดฐเต เด‰เดฆเดพเดนเดฐเดฃเด‚ เดธเตƒเดทเตโ€ŒเดŸเดฟเด•เตเด•เดชเตเดชเต†เดŸเตเดŸเต, เด…เดคเดฟเดจเตเดฑเต† เด‰เดŸเดฎเดฏเตโ€Œเด•เตเด•เต เดฎเดพเดคเตเดฐเดฎเต‡ เดฐเต€เดคเดฟ เดตเดฟเดณเดฟเดšเตเดšเต เดชเตเดฐเดตเตผเดคเตเดคเดจเด‚ เดจเดฟเตผเดคเตเดคเดพเตป เด•เดดเดฟเดฏเต‚. เดฑเดฆเตเดฆเดพเด•เตเด•เตเด•. เด•เตเดฏเดพเตปเดธเดฒเต‡เดทเตป เดŸเต‹เด•เตเด•เตบ เดฎเดพเดคเตเดฐเดฎเต‡ เด“เดชเตเดชเดฑเต‡เดทเดจเดฟเดฒเต‡เด•เตเด•เต เด•เตˆเดฎเดพเดฑเตเด•เดฏเตเดณเตเดณเต‚. CancellationToken เด‰เดŸเดฎเด•เตพเด•เตเด•เต เดธเตเดตเดฏเด‚ เดชเตเดฐเดตเตผเดคเตเดคเดจเด‚ เดฑเดฆเตเดฆเดพเด•เตเด•เดพเตป เด•เดดเดฟเดฏเดฟเดฒเตเดฒ, เดŽเดจเตเดจเดพเตฝ เดชเตเดฐเดตเตผเดคเตเดคเดจเด‚ เดฑเดฆเตเดฆเดพเด•เตเด•เดฟเดฏเดฟเดŸเตเดŸเตเดฃเตเดŸเต‹ เดŽเดจเตเดจเต เดฎเดพเดคเตเดฐเดฎเต‡ เดชเดฐเดฟเดถเต‹เดงเดฟเด•เตเด•เดพเตป เด•เดดเดฟเดฏเต‚. เด‡เดคเดฟเดจเดพเดฏเดฟ เด’เดฐเต เดฌเต‚เดณเดฟเดฏเตป เดชเตเดฐเต‹เดชเตเดชเตผเดŸเตเดŸเดฟ เด‰เดฃเตเดŸเต เดฑเดฆเตเดฆเดพเด•เตเด•เตฝ เด…เดญเตเดฏเตผเดคเตเดฅเดฟเดšเตเดšเต เดฐเต€เดคเดฟเดฏเตเด‚ เดคเตเดฐเต‹IfCancelRequested. เดฐเดฃเตเดŸเดพเดฎเดคเตเดคเต‡เดคเต เด’เดฐเต เด…เดชเดตเดพเดฆเด‚ เดŽเดฑเดฟเดฏเตเด‚ TaskCancelledException CancellationToken เด‰เดฆเดพเดนเดฐเดฃเด‚ เดคเดคเตเดคเดฏเดพเดฏเดฟ เด•เดพเดฃเตเดฎเตเดชเต‹เตพ เดฑเดฆเตเดฆเดพเด•เตเด•เตฝ เดฐเต€เดคเดฟ เดตเดฟเดณเดฟเดšเตเดšเดฟเดฐเตเดจเตเดจเตเดตเต†เด™เตเด•เดฟเตฝ. เดžเดพเตป เด‰เดชเดฏเต‹เด—เดฟเด•เตเด•เดพเตป เดถเตเดชเดพเตผเดถ เดšเต†เดฏเตเดฏเตเดจเตเดจ เดฐเต€เดคเดฟ เด‡เดคเดพเดฃเต. เดเดคเต เดธเดฎเดฏเดคเตเดคเดพเดฃเต เด’เดฐเต เด…เดชเดตเดพเดฆ เดชเตเดฐเดตเตผเดคเตเดคเดจเด‚ เดจเดฟเตผเดคเตเดคเดฒเดพเด•เตเด•เดพเตป เด•เดดเดฟเดฏเตเด• เดŽเดจเตเดจเดคเดฟเดจเตเดฑเต† เดชเต‚เตผเดฃเตเดฃ เดจเดฟเดฏเดจเตเดคเตเดฐเดฃเด‚ เดจเต‡เดŸเตเดจเตเดจเดคเดฟเดฒเต‚เดŸเต† เด‡เดคเต เดฎเตเดฎเตเดชเดคเตเดคเต† เด“เดชเตเดทเดจเตเด•เดณเต† เด…เดชเต‡เด•เตเดทเดฟเดšเตเดšเต เด’เดฐเต เดฎเต†เดšเตเดšเดชเตเดชเต†เดŸเตเดคเตเดคเดฒเดพเดฃเต.

เด’เดฐเต เดคเตเดฐเต†เดกเต เดจเดฟเตผเดคเตเดคเตเดจเตเดจเดคเดฟเดจเตเดณเตเดณ เดเดฑเตเดฑเดตเตเด‚ เด•เตเดฐเต‚เดฐเดฎเดพเดฏ เด“เดชเตเดทเตป Win32 API เดŸเต†เตผเดฎเดฟเดจเต‡เดฑเตเดฑเต เดคเตเดฐเต†เดกเต เดซเด‚เด—เตโ€Œเดทเดจเต† เดตเดฟเดณเดฟเด•เตเด•เตเด• เดŽเดจเตเดจเดคเดพเดฃเต. เดˆ เดซเด‚เด—เตโ€Œเดทเตป เดตเดฟเดณเดฟเดšเตเดšเดคเดฟเดจเต เดถเต‡เดทเดฎเตเดณเตเดณ CLR-เดจเตเดฑเต† เดชเต†เดฐเตเดฎเดพเดฑเตเดฑเด‚ เดชเตเดฐเดตเดšเดจเดพเดคเต€เดคเดฎเดพเดฏเดฟเดฐเดฟเด•เตเด•เดพเด‚. MSDN-เตฝ เดˆ เดซเด‚เด—เตโ€Œเดทเดจเต†เด•เตเด•เตเดฑเดฟเดšเตเดšเต เด‡เดจเดฟเดชเตเดชเดฑเดฏเตเดจเตเดจเดต เดŽเดดเตเดคเดฟเดฏเดฟเดฐเดฟเด•เตเด•เตเดจเตเดจเต: โ€œเดŸเต†เตผเดฎเดฟเดจเต‡เดฑเตเดฑเต เดคเตเดฐเต†เดกเต เด…เดชเด•เดŸเด•เดฐเดฎเดพเดฏ เด’เดฐเต เดซเด‚เด—เตโ€Œเดทเดจเดพเดฃเต, เด…เดคเต เด…เด™เตเด™เต‡เดฏเดฑเตเดฑเดคเตเดคเต† เดธเดจเตเดฆเตผเดญเด™เตเด™เดณเดฟเตฝ เดฎเดพเดคเตเดฐเด‚ เด‰เดชเดฏเต‹เด—เดฟเด•เตเด•เต‡เดฃเตเดŸเดคเดพเดฃเต. "

FromAsync เดฐเต€เดคเดฟ เด‰เดชเดฏเต‹เด—เดฟเดšเตเดšเต เดฒเต†เด—เดธเดฟ API เดŸเดพเดธเตโ€Œเด•เต เดฌเต‡เดธเตเดกเต เด†เดฏเดฟ เดชเดฐเดฟเดตเตผเดคเตเดคเดจเด‚ เดšเต†เดฏเตเดฏเตเดจเตเดจเต

เดŸเดพเดธเตโ€Œเด•เตเด•เตเด•เตพ เด…เดตเดคเดฐเดฟเดชเตเดชเดฟเดšเตเดšเดคเดฟเดจเต เดถเต‡เดทเด‚ เด†เดฐเด‚เดญเดฟเดšเตเดš เด’เดฐเต เดชเตเดฐเต‹เดœเด•เตโ€Œเดฑเตเดฑเดฟเตฝ เดชเตเดฐเดตเตผเดคเตเดคเดฟเด•เตเด•เดพเตป เดจเดฟเด™เตเด™เตพเด•เตเด•เต เดญเดพเด—เตเดฏเดฎเตเดฃเตเดŸเต†เด™เตเด•เดฟเตฝ, เดฎเดฟเด•เตเด• เดกเต†เดตเดฒเดชเตเดชเตผเดฎเดพเดฐเต†เดฏเตเด‚ เดจเดฟเดถเดฌเตเดฆเดฎเดพเดฏเดฟ เดญเดฏเดชเตเดชเต†เดŸเตเดคเตเดคเตเดจเตเดจเดคเต เด…เดตเดธเดพเดจเดฟเดชเตเดชเดฟเดšเตเดšเดพเตฝ, เดจเดฟเด™เตเด™เตพเด•เตเด•เต เดงเดพเดฐเดพเดณเด‚ เดชเดดเดฏ API-เด•เตพ, เดฎเต‚เดจเตเดจเดพเด‚ เด•เด•เตเดทเดฟเด•เตพ, เดจเดฟเด™เตเด™เดณเตเดŸเต† เดŸเต€เด‚ เดŽเดจเตเดจเดฟเดตเดฏเตเดฎเดพเดฏเดฟ เด‡เดŸเดชเต†เดŸเต‡เดฃเตเดŸเดฟ เดตเดฐเดฟเดฒเตเดฒ. เดชเดฃเตเดŸเต เดชเต€เดกเดฟเดชเตเดชเดฟเดšเตเดšเดฟเดŸเตเดŸเตเดฃเตเดŸเต. เดญเดพเด—เตเดฏเดตเดถเดพเตฝ, .NET เดซเตเดฐเต†เดฏเดฟเด‚เดตเตผเด•เตเด•เต เดŸเต€เด‚ เดžเด™เตเด™เดณเตเดŸเต† เดธเด‚เดฐเด•เตเดทเดฃเด‚ เดเดฑเตเดฑเต†เดŸเตเดคเตเดคเต, เด’เดฐเตเดชเด•เตเดทเต† เดฒเด•เตเดทเตเดฏเด‚ เดจเดฎเตเดฎเดณเต†เดคเตเดคเดจเตเดจเต† เดชเดฐเดฟเดชเดพเดฒเดฟเด•เตเด•เตเด• เดŽเดจเตเดจเดคเดพเดฏเดฟเดฐเดฟเด•เตเด•เดพเด‚. เด…เดคเต†เดจเตเดคเดพเดฏเดพเดฒเตเด‚, เดชเดดเดฏ เด…เดธเดฟเตปเด•เตเดฐเดฃเดธเต เดชเตเดฐเต‹เด—เตเดฐเดพเดฎเดฟเด‚เด—เต เดธเดฎเต€เดชเดจเด™เตเด™เดณเดฟเตฝ เดŽเดดเตเดคเดฟเดฏเดฟเดฐเดฟเด•เตเด•เตเดจเตเดจ เด•เต‹เดกเต เดชเตเดคเดฟเดฏเดคเดฟเดฒเต‡เด•เตเด•เต เดตเต‡เดฆเดจเดฏเดฟเดฒเตเดฒเดพเดคเต† เดชเดฐเดฟเดตเตผเดคเตเดคเดจเด‚ เดšเต†เดฏเตเดฏเตเดจเตเดจเดคเดฟเดจเตเดณเตเดณ เดจเดฟเดฐเดตเดงเดฟ เดŸเต‚เดณเตเด•เตพ .NET-เดจเตเดฃเตเดŸเต. เด…เดตเดฏเดฟเดฒเตŠเดจเตเดจเดพเดฃเต เดŸเดพเดธเตโ€Œเด•เตเดซเดพเด•เตโ€ŒเดŸเดฑเดฟเดฏเตเดŸเต† เดซเตเดฐเด‚เด…เดธเดฟเด™เตเด•เต เดฐเต€เดคเดฟ. เดšเตเดตเดŸเต†เดฏเตเดณเตเดณ เด•เต‹เดกเต เด‰เดฆเดพเดนเดฐเดฃเดคเตเดคเดฟเตฝ, เดˆ เดฐเต€เดคเดฟ เด‰เดชเดฏเต‹เด—เดฟเดšเตเดšเต เด’เดฐเต เดŸเดพเดธเตโ€Œเด•เตเด•เดฟเตฝ WebRequest เด•เตเดฒเดพเดธเดฟเดจเตเดฑเต† เดชเดดเดฏ เด…เดธเดฟเตปเด•เต เดฐเต€เดคเดฟเด•เตพ เดžเดพเตป เดชเตŠเดคเดฟเดฏเตเดจเตเดจเต.

object state = null;
WebRequest wr = WebRequest.CreateHttp("http://github.com");
await Task.Factory.FromAsync(
    wr.BeginGetResponse,
    we.EndGetResponse
);

เด‡เดคเตŠเดฐเต เด‰เดฆเดพเดนเดฐเดฃเด‚ เดฎเดพเดคเตเดฐเดฎเดพเดฃเต, เดฌเดฟเตฝเดฑเตเดฑเต-เด‡เตป เดคเดฐเด™เตเด™เตพ เด‰เดชเดฏเต‹เด—เดฟเดšเตเดšเต เดจเดฟเด™เตเด™เตพ เด‡เดคเต เดšเต†เดฏเตเดฏเดพเตป เดธเดพเดงเตเดฏเดคเดฏเดฟเดฒเตเดฒ, เดŽเดจเตเดจเดพเตฝ เดเดคเต เดชเดดเดฏ เดชเตเดฐเต‹เดœเด•เตโ€Œเดฑเตเดฑเตเด‚ เด…เดคเต เดธเตเดตเต€เด•เดฐเดฟเด•เตเด•เตเดจเตเดจ IAsyncResult, EndDoSomething เดฐเต€เดคเดฟเด•เตพ เดจเตฝเด•เตเดจเตเดจ BeginDoSomething เดฐเต€เดคเดฟเด•เดณเดพเตฝ เดจเดฟเดฑเดžเตเดžเดฟเดฐเดฟเด•เตเด•เตเดจเตเดจเต.

TaskCompletionSource เด•เตเดฒเดพเดธเต เด‰เดชเดฏเต‹เด—เดฟเดšเตเดšเต เดฒเต†เด—เดธเดฟ API-เดฒเต‡เด•เตเด•เต เดŸเดพเดธเตโ€Œเด•เต เดฌเต‡เดธเตเดกเต เด†เดฏเดฟ เดชเดฐเดฟเดตเตผเดคเตเดคเดจเด‚ เดšเต†เดฏเตเดฏเตเด•

เดชเดฐเดฟเด—เดฃเดฟเด•เตเด•เต‡เดฃเตเดŸ เดฎเดฑเตเดฑเตŠเดฐเต เดชเตเดฐเดงเดพเดจ เด‰เดชเด•เดฐเดฃเด‚ เด•เตเดฒเดพเดธเต เด†เดฃเต TaskCompletionSource. เดชเตเดฐเดตเตผเดคเตเดคเดจเด™เตเด™เตพ, เด‰เดฆเตเดฆเต‡เดถเตเดฏเด‚, เดชเตเดฐเดตเตผเดคเตเดคเดจ เดคเดคเตเดตเด‚ เดŽเดจเตเดจเดฟเดตเดฏเตเดŸเต† เด•เดพเดฐเตเดฏเดคเตเดคเดฟเตฝ, เด‡เดคเต เดžเดพเตป เดฎเตเด•เดณเดฟเตฝ เดŽเดดเตเดคเดฟเดฏ ThreadPool เด•เตเดฒเดพเดธเดฟเดจเตเดฑเต† RegisterWaitForSingleObject เดฐเต€เดคเดฟเดฏเต† เด’เดฐเต เดชเดฐเดฟเดงเดฟเดตเดฐเต† เด…เดจเตเดธเตเดฎเดฐเดฟเดชเตเดชเดฟเด•เตเด•เตเดจเตเดจเดคเดพเดฏเดฟเดฐเดฟเด•เตเด•เดพเด‚. เดˆ เด•เตเดฒเดพเดธเต เด‰เดชเดฏเต‹เด—เดฟเดšเตเดšเต, เดŸเดพเดธเตโ€Œเด•เตเด•เตเด•เดณเดฟเตฝ เดชเดดเดฏ เด…เดธเดฟเตปเด•เตเดฐเดฃเดธเต เดŽเดชเดฟเดเด•เตพ เดจเดฟเด™เตเด™เตพเด•เตเด•เต เดŽเดณเตเดชเตเดชเดคเตเดคเดฟเดฒเตเด‚ เดธเต—เด•เดฐเตเดฏเดชเตเดฐเดฆเดฎเดพเดฏเตเด‚ เดชเตŠเดคเดฟเดฏเดพเดจเดพเด•เตเด‚.

เดˆ เด†เดตเดถเตเดฏเด™เตเด™เตพเด•เตเด•เดพเดฏเดฟ เด‰เดฆเตเดฆเต‡เดถเดฟเดšเตเดšเดฟเดŸเตเดŸเตเดณเตเดณ TaskFactory เด•เตเดฒเดพเดธเตเดธเดฟเดจเตเดฑเต† FromAsync เดฐเต€เดคเดฟเดฏเต†เด•เตเด•เตเดฑเดฟเดšเตเดšเต เดžเดพเตป เด‡เดคเดฟเดจเด•เด‚ เดธเด‚เดธเดพเดฐเดฟเดšเตเดšเตเดตเต†เดจเตเดจเต เดจเดฟเด™เตเด™เตพ เดชเดฑเดฏเตเด‚. เด•เดดเดฟเดžเตเดž 15 เดตเตผเดทเดฎเดพเดฏเดฟ เดฎเตˆเด•เตเดฐเต‹เดธเต‹เดซเตเดฑเตเดฑเต เดตเดพเด—เตเดฆเดพเดจเด‚ เดšเต†เดฏเตเดค .net-เดฒเต† เด…เดธเดฟเตปเด•เตเดฐเดฃเดธเต เดฎเต‹เดกเดฒเตเด•เดณเตเดŸเต† เดตเดฟเด•เดธเดจเดคเตเดคเดฟเดจเตเดฑเต† เดฎเตเดดเตเดตเตป เดšเดฐเดฟเดคเตเดฐเดตเตเด‚ เด‡เดตเดฟเดŸเต† เดจเดพเด‚ เด“เตผเด•เตเด•เต‡เดฃเตเดŸเดคเตเดฃเตเดŸเต: เดŸเดพเดธเตเด•เต-เดฌเต‡เดธเตเดกเต เด…เดธเดฟเตปเด•เตเดฐเดฃเดธเต เดชเดพเดฑเตเดฑเต‡เดฃเดฟเดจเต (เดŸเดฟเดŽเดชเดฟ) เดฎเตเดฎเตเดชเต, เดŽเดธเดฟเตปเด•เตเดฐเดฃเดธเต เดชเตเดฐเต‹เด—เตเดฐเดพเดฎเดฟเด‚เด—เต เดชเดพเดฑเตเดฑเต‡เตบ (เดŽเดชเดฟเดชเดฟ) เด‰เดฃเตเดŸเดพเดฏเดฟเดฐเตเดจเตเดจเต. เดฐเต€เดคเดฟเด•เดณเต† เด•เตเดฑเดฟเดšเตเดšเดพเดฏเดฟเดฐเตเดจเตเดจเต เด†เดฐเด‚เดญเดฟเด•เตเด•เตเดจเตเดจเตเดŽเดจเตเดคเต†เด™เตเด•เดฟเดฒเตเด‚ เดคเดฟเดฐเดฟเดšเตเดšเตเดตเดฐเตเดจเตเดจเต IAsyncResult เดฐเต€เดคเดฟเด•เดณเตเด‚ เด…เดตเดธเดพเดจเดฟเด•เตเด•เตเดจเตเดจเตDoSomething เด…เดคเต เด…เด‚เด—เต€เด•เดฐเดฟเด•เตเด•เตเด•เดฏเตเด‚ เดˆ เดตเตผเดทเดคเตเดคเต† เดชเตˆเดคเตƒเด•เดคเตเดคเดฟเดจเต FromAsync เดฐเต€เดคเดฟ เดคเดฟเด•เดžเตเดžเดคเดพเดฃเต, เดŽเดจเตเดจเดพเตฝ เด•เดพเดฒเด•เตเดฐเดฎเต‡เดฃ, เด…เดคเต เด‡เดตเดจเตเดฑเต เดฌเต‡เดธเตเดกเต เด…เดธเดฟเตปเด•เตเดฐเดฃเดธเต เดชเดพเดฑเตเดฑเต‡เตบ เด‰เดชเดฏเต‹เด—เดฟเดšเตเดšเต เดฎเดพเดฑเตเดฑเดฟเดธเตเดฅเดพเดชเดฟเดšเตเดšเต (EAP), เด…เดธเดฟเตปเด•เตเดฐเดฃเดธเต เดชเตเดฐเดตเตผเดคเตเดคเดจเด‚ เดชเต‚เตผเดคเตเดคเดฟเดฏเดพเด•เตเดฎเตเดชเต‹เตพ เด’เดฐเต เด‡เดตเดจเตเดฑเต เด‰เดฏเตผเดจเตเดจเตเดตเดฐเตเดฎเต†เดจเตเดจเต เด…เดจเตเดฎเดพเดจเดฟเดšเตเดšเต.

เด‡เดตเดจเตเดฑเต เดฎเต‹เดกเดฒเดฟเดจเต เดšเตเดฑเตเดฑเตเด‚ เดจเดฟเตผเดฎเตเดฎเดฟเดšเตเดš เดŸเดพเดธเตโ€Œเด•เตเด•เตเด•เดณเตเด‚ เดฒเต†เด—เดธเดฟ API-เด•เดณเตเด‚ เดชเตŠเดคเดฟเดฏเตเดจเตเดจเดคเดฟเดจเต TaskCompletionSource เด…เดจเตเดฏเต‹เดœเตเดฏเดฎเดพเดฃเต. เด…เดคเดฟเดจเตเดฑเต† เดชเตเดฐเดตเตผเดคเตเดคเดจเดคเตเดคเดฟเดจเตเดฑเต† เดธเดพเดฐเดพเด‚เดถเด‚ เด‡เดชเตเดฐเด•เดพเดฐเดฎเดพเดฃเต: เดˆ เด•เตเดฒเดพเดธเดฟเดจเตเดฑเต† เด’เดฐเต เดตเดธเตเดคเตเดตเดฟเดจเต เดŸเดพเดธเตโ€Œเด•เต เดŽเดจเตเดจ เดคเดฐเดคเตเดคเดฟเดฒเตเดณเตเดณ เด’เดฐเต เดชเตŠเดคเต เดธเตเดตเดคเตเดคเต เด‰เดฃเตเดŸเต, เด…เดคเดฟเดจเตเดฑเต† เด…เดตเดธเตเดฅ TaskCompletionSource เด•เตเดฒเดพเดธเดฟเดจเตเดฑเต† SetResult, SetException เดฎเตเดคเดฒเดพเดฏเดต เดตเดดเดฟ เดจเดฟเดฏเดจเตเดคเตเดฐเดฟเด•เตเด•เดพเดจเดพเด•เตเด‚. เดˆ เดŸเดพเดธเตโ€Œเด•เตเด•เดฟเตฝ เดตเต†เดฏเดฟเดฑเตเดฑเต เด“เดชเตเดชเดฑเต‡เดฑเตเดฑเตผ เดชเตเดฐเดฏเต‹เด—เดฟเดšเตเดš เดธเตเดฅเดฒเด™เตเด™เดณเดฟเตฝ, เดŸเดพเดธเตโ€Œเด•เต เด•เต‹เด‚เดชเตเดฒเดฟเดทเตป เดธเต‹เดดเตโ€Œเดธเดฟเตฝ เดชเตเดฐเดฏเต‹เด—เดฟเดšเตเดš เดฐเต€เดคเดฟเดฏเต† เด†เดถเตเดฐเดฏเดฟเดšเตเดšเต เด‡เดคเต เดŽเด•เตโ€Œเดธเดฟเด•เตเดฏเต‚เดŸเตเดŸเต เดšเต†เดฏเตเดฏเดชเตเดชเต†เดŸเตเด‚ เด…เดฒเตเดฒเต†เด™เตเด•เดฟเตฝ เดชเดฐเดพเดœเดฏเดชเตเดชเต†เดŸเตเด‚. เด‡เดคเต เด‡เดชเตเดชเต‹เดดเตเด‚ เดตเตเดฏเด•เตเดคเดฎเดฒเตเดฒเต†เด™เตเด•เดฟเตฝ, เดˆ เด•เต‹เดกเต เด‰เดฆเดพเดนเดฐเดฃเด‚ เดจเต‹เด•เตเด•เดพเด‚, เดšเดฟเดฒ เดชเดดเดฏ EAP API เด’เดฐเต TaskCompletionSource เด‰เดชเดฏเต‹เด—เดฟเดšเตเดšเต เด’เดฐเต เดŸเดพเดธเตโ€Œเด•เตเด•เดฟเตฝ เดชเตŠเดคเดฟเดžเตเดžเดฟเดฐเดฟเด•เตเด•เตเดจเตเดจเต: เด‡เดตเดจเตเดฑเต เดซเดฏเตผ เดšเต†เดฏเตเดฏเตเดฎเตเดชเต‹เตพ, เดŸเดพเดธเตโ€Œเด•เต เดชเต‚เตผเดคเตเดคเดฟเดฏเดพเดฏ เด…เดตเดธเตเดฅเดฏเดฟเดฒเต‡เด•เตเด•เต เดฎเดพเดฑเตเดฑเตเด‚, เด•เต‚เดŸเดพเดคเต† เด•เดพเดคเตเดคเดฟเดฐเดฟเด•เตเด•เตเดจเตเดจ เด“เดชเตเดชเดฑเต‡เดฑเตเดฑเตผ เดชเตเดฐเดฏเต‹เด—เดฟเดšเตเดš เดฐเต€เดคเดฟเดฏเตเด‚ เดˆ เดŸเดพเดธเตโ€Œเด•เต เด’เดฌเตโ€Œเดœเด•เตเดฑเตเดฑเต เดฒเดญเดฟเดšเตเดšเดคเดฟเดจเต เดถเต‡เดทเด‚ เด…เดคเดฟเดจเตเดฑเต† เดจเดฟเตผเดตเตเดตเดนเดฃเด‚ เดชเตเดจเดฐเดพเดฐเด‚เดญเดฟเด•เตเด•เตเด‚ เดซเดฒเด‚.

public static Task<Result> DoAsync(this SomeApiInstance someApiObj) {

    var completionSource = new TaskCompletionSource<Result>();
    someApiObj.Done += 
        result => completionSource.SetResult(result);
    someApiObj.Do();

    result completionSource.Task;
}

TaskCompletionSource เดจเตเดฑเตเด™เตเด™เตเด•เดณเตเด‚ เดคเดจเตเดคเตเดฐเด™เตเด™เดณเตเด‚

TaskCompletionSource เด‰เดชเดฏเต‹เด—เดฟเดšเตเดšเต เดชเดดเดฏ APIเด•เตพ เดชเตŠเดคเดฟเดฏเตเด• เดฎเดพเดคเตเดฐเดฎเดฒเตเดฒ เดšเต†เดฏเตเดฏเตเดจเตเดจเดคเต. เดˆ เด•เตเดฒเดพเดธเต เด‰เดชเดฏเต‹เด—เดฟเด•เตเด•เตเดจเตเดจเดคเต, เดคเตเดฐเต†เดกเตเด•เตพ เด‰เตพเด•เตเด•เตŠเดณเตเดณเดพเดคเตเดค เดŸเดพเดธเตโ€Œเด•เตเด•เตเด•เดณเดฟเตฝ เดตเดฟเดตเดฟเดง API-เด•เตพ เดฐเต‚เดชเด•เตฝเดชเตเดชเดจ เดšเต†เดฏเตเดฏเตเดจเตเดจเดคเดฟเดจเตเดณเตเดณ เดฐเดธเด•เดฐเดฎเดพเดฏ เด’เดฐเต เดธเดพเดงเตเดฏเดค เดคเตเดฑเด•เตเด•เตเดจเตเดจเต. เดธเตเดŸเตเดฐเต€เด‚, เดžเด™เตเด™เตพ เด“เตผเด•เตเด•เตเดจเตเดจเดคเตเดชเต‹เดฒเต†, เดตเดฟเดฒเดฏเต‡เดฑเดฟเดฏ เด’เดฐเต เดตเดฟเดญเดตเดฎเดพเดฃเต, เด…เดตเดฏเตเดŸเต† เดŽเดฃเตเดฃเด‚ เดชเดฐเดฟเดฎเดฟเดคเดฎเดพเดฃเต (เดชเตเดฐเดงเดพเดจเดฎเดพเดฏเตเด‚ เดฑเดพเดฎเดฟเดจเตเดฑเต† เด…เดณเดตเดฟเตฝ). เดธเด™เตเด•เต€เตผเดฃเตเดฃเดฎเดพเดฏ เดฌเดฟเดธเดฟเดจเดธเตเดธเต เดฒเต‹เดœเดฟเด•เตเด•เต‹เดŸเตเด•เต‚เดŸเดฟเดฏ เด’เดฐเต เดฒเต‹เดกเต เดšเต†เดฏเตเดค เดตเต†เดฌเต เด†เดชเตเดฒเดฟเด•เตเด•เต‡เดทเตป เดตเดฟเด•เดธเดฟเดชเตเดชเดฟเด•เตเด•เตเดจเตเดจเดคเดฟเดฒเต‚เดŸเต† เดˆ เดชเดฐเดฟเดฎเดฟเดคเดฟ เดŽเดณเตเดชเตเดชเดคเตเดคเดฟเตฝ เดจเต‡เดŸเดพเดจเดพเด•เตเด‚. เดฒเต‹เด‚เด—เต-เดชเต‹เดณเดฟเด‚เด—เต เดชเต‹เดฒเตเดณเตเดณ เด’เดฐเต เดŸเตเดฐเดฟเด•เตเด•เต เดจเดŸเดชเตเดชเดฟเดฒเดพเด•เตเด•เตเดฎเตเดชเต‹เตพ เดžเดพเตป เดธเด‚เดธเดพเดฐเดฟเด•เตเด•เตเดจเตเดจ เดธเดพเดงเตเดฏเดคเด•เตพ เดชเดฐเดฟเด—เดฃเดฟเด•เตเด•เดพเด‚.

เดšเตเดฐเตเด•เตเด•เดคเตเดคเดฟเตฝ, เดคเดจเตเดคเตเดฐเดคเตเดคเดฟเดจเตเดฑเต† เดธเดพเดฐเดพเด‚เดถเด‚ เด‡เดคเดพเดฃเต: API-เตฝ เดจเดฟเดจเตเดจเต เด…เดคเดฟเดจเตเดฑเต† เดญเดพเด—เดคเตเดคเต เดธเด‚เดญเดตเดฟเด•เตเด•เตเดจเตเดจ เดšเดฟเดฒ เดธเด‚เดญเดตเด™เตเด™เดณเต†เด•เตเด•เตเดฑเดฟเดšเตเดšเต เดจเดฟเด™เตเด™เตพเด•เตเด•เต เดตเดฟเดตเดฐเด™เตเด™เตพ เดฒเดญเดฟเด•เตเด•เต‡เดฃเตเดŸเดคเตเดฃเตเดŸเต, เด…เดคเต‡เดธเดฎเดฏเด‚ API-เด•เตเด•เต เดšเดฟเดฒ เด•เดพเดฐเดฃเด™เตเด™เดณเดพเตฝ เด‡เดตเดจเตเดฑเต เดฑเดฟเดชเตเดชเต‹เตผเดŸเตเดŸเต เดšเต†เดฏเตเดฏเดพเตป เด•เดดเดฟเดฏเดฟเดฒเตเดฒ, เดชเด•เตเดทเต‡ เดธเด‚เดธเตเดฅเดพเดจเด‚ เดฎเดพเดคเตเดฐเดฎเต‡ เดคเดฟเดฐเดฟเด•เต† เดจเตฝเด•เดพเดจเดพเด•เต‚. เดตเต†เดฌเตโ€Œเดธเต‹เด•เตเด•เดฑเตเดฑเดฟเดจเต เดฎเตเดฎเตเดชเต‹ เด…เดฒเตเดฒเต†เด™เตเด•เดฟเตฝ เดšเดฟเดฒ เด•เดพเดฐเดฃเด™เตเด™เดณเดพเตฝ เดˆ เดธเดพเด™เตเด•เต‡เดคเดฟเด•เดตเดฟเดฆเตเดฏ เด‰เดชเดฏเต‹เด—เดฟเด•เตเด•เตเดจเตเดจเดคเต เด…เดธเดพเดงเตเดฏเดฎเดพเดฏเดชเตเดชเต‹เดดเต‹ HTTP-เดฏเตเดŸเต† เดฎเตเด•เดณเดฟเตฝ เดจเดฟเตผเดฎเตเดฎเดฟเดšเตเดš เดŽเดฒเตเดฒเดพ API-เด•เดณเตเด‚ เด‡เดตเดฏเตเดŸเต† เด’เดฐเต เด‰เดฆเดพเดนเดฐเดฃเดฎเดพเดฃเต. เด•เตเดฒเดฏเดจเตเดฑเดฟเดจเต HTTP เดธเต†เตผเดตเดฑเดฟเดจเต‹เดŸเต เดšเต‹เดฆเดฟเด•เตเด•เดพเตป เด•เดดเดฟเดฏเตเด‚. HTTP เดธเต†เตผเดตเดฑเดฟเดจเต เด•เตเดฒเดฏเดจเตเดฑเตเดฎเดพเดฏเดฟ เด†เดถเดฏเดตเดฟเดจเดฟเดฎเดฏเด‚ เด†เดฐเด‚เดญเดฟเด•เตเด•เดพเตป เด•เดดเดฟเดฏเดฟเดฒเตเดฒ. เด’เดฐเต เดŸเตˆเดฎเตผ เด‰เดชเดฏเต‹เด—เดฟเดšเตเดšเต เดธเต†เตผเดตเดฑเดฟเตฝ เดตเต‹เดŸเตเดŸเต†เดŸเตเดชเตเดชเต เดจเดŸเดคเตเดคเตเด• เดŽเดจเตเดจเดคเดพเดฃเต เด’เดฐเต เดฒเดณเดฟเดคเดฎเดพเดฏ เดชเดฐเดฟเดนเดพเดฐเด‚, เดŽเดจเตเดจเดพเตฝ เด‡เดคเต เดธเต†เตผเดตเดฑเดฟเตฝ เด…เดงเดฟเด• เดฒเต‹เดกเตเด‚ เดถเดฐเดพเดถเดฐเดฟ เดŸเตˆเดฎเตผเด‡เดจเตเดฑเตผเดตเต†เตฝ / 2-เตฝ เด…เดงเดฟเด• เด•เดพเดฒเดคเดพเดฎเดธเดตเตเด‚ เดธเตƒเดทเตเดŸเดฟเด•เตเด•เตเดจเตเดจเต. เด‡เดคเต เดฎเดฑเดฟเด•เดŸเด•เตเด•เดพเตป, เดฒเต‹เด‚เด—เต เดชเต‹เดณเดฟเด‚เด—เต เดŽเดจเตเดจ เด’เดฐเต เดŸเตเดฐเดฟเด•เตเด•เต เด•เดฃเตเดŸเตเดชเดฟเดŸเดฟเดšเตเดšเต, เด…เดคเดฟเตฝ เดจเดฟเดจเตเดจเตเดณเตเดณ เดชเตเดฐเดคเดฟเด•เดฐเดฃเด‚ เดตเตˆเด•เตเดจเตเดจเดคเต เด‰เตพเดชเตเดชเต†เดŸเตเดจเตเดจเต. เดธเดฎเดฏเดชเดฐเดฟเดงเดฟ เด…เดตเดธเดพเดจเดฟเด•เตเด•เตเดจเตเดจเดคเตเดตเดฐเต† เด…เดฒเตเดฒเต†เด™เตเด•เดฟเตฝ เด’เดฐเต เด‡เดตเดจเตเดฑเต เดธเด‚เดญเดตเดฟเด•เตเด•เตเดจเตเดจเดคเต เดตเดฐเต† เดธเต†เตผเดตเตผ. เด‡เดตเดจเตเดฑเต เดธเด‚เดญเดตเดฟเดšเตเดšเดฟเดŸเตเดŸเตเดฃเตเดŸเต†เด™เตเด•เดฟเตฝ, เด…เดคเต เดชเตเดฐเต‹เดธเดธเตเดธเต เดšเต†เดฏเตเดฏเตเดจเตเดจเต, เด‡เดฒเตเดฒเต†เด™เตเด•เดฟเตฝ, เด…เดญเตเดฏเตผเดคเตเดฅเดจ เดตเต€เดฃเตเดŸเตเด‚ เด…เดฏเดฏเตเด•เตเด•เตเด‚.

while(!eventOccures && !timeoutExceeded)  {

  CheckTimout();
  CheckEvent();
  Thread.Sleep(1);
}

เดŽเดจเตเดจเดพเตฝ เด‡เดตเดจเตเดฑเดฟเดจเดพเดฏเดฟ เด•เดพเดคเตเดคเดฟเดฐเดฟเด•เตเด•เตเดจเตเดจ เด•เตเดฒเดฏเดจเตเดฑเตเด•เดณเตเดŸเต† เดŽเดฃเตเดฃเด‚ เดตเตผเดฆเตเดงเดฟเด•เตเด•เตเดจเตเดจเดคเต‹เดŸเต† เด…เดคเตเดคเดฐเดฎเตŠเดฐเต เดชเดฐเดฟเดนเดพเดฐเด‚ เดญเดฏเดพเดจเด•เดฎเดพเดฃเต†เดจเตเดจเต เดคเต†เดณเดฟเดฏเดฟเด•เตเด•เตเด‚, เด•เดพเดฐเดฃเด‚... เด…เดคเตเดคเดฐเด‚ เด“เดฐเต‹ เด•เตเดฒเดฏเดจเตเดฑเตเด‚ เด’เดฐเต เด‡เดตเดจเตเดฑเดฟเดจเดพเดฏเดฟ เด•เดพเดคเตเดคเดฟเดฐเดฟเด•เตเด•เตเดจเตเดจ เด’เดฐเต เดฎเตเดดเตเดตเตป เดคเตเดฐเต†เดกเตเด‚ เด‰เตพเด•เตเด•เตŠเดณเตเดณเตเดจเตเดจเต. เด…เดคเต†, เด‡เดตเดจเตเดฑเต เดชเตเดฐเดตเตผเดคเตเดคเดจเด•เตเดทเดฎเดฎเดพเด•เตเดฎเตเดชเต‹เตพ เดžเด™เตเด™เตพเด•เตเด•เต เด…เดงเดฟเด•เดฎเดพเดฏเดฟ 1เดฎเดฟ.เดธเต เด•เดพเดฒเดคเดพเดฎเดธเด‚ เดฒเดญเดฟเด•เตเด•เตเดจเตเดจเต, เดฎเดฟเด•เตเด•เดชเตเดชเต‹เดดเตเด‚ เด‡เดคเต เดชเตเดฐเดพเดงเดพเดจเตเดฏเดฎเตผเดนเดฟเด•เตเด•เตเดจเตเดจเดคเดฒเตเดฒ, เดชเด•เตเดทเต‡ เดธเต‹เดซเตโ€Œเดฑเตเดฑเตโ€Œเดตเต†เดฏเดฑเดฟเดจเต† เด…เดคเดฟเดจเต†เด•เตเด•เดพเตพ เดฎเต‹เดถเดฎเดพเด•เตเด•เตเดจเตเดจเดคเต เดŽเดจเตเดคเตเด•เตŠเดฃเตเดŸเต? เดžเด™เตเด™เตพ Thread.Sleep(1) เดจเต€เด•เตเด•เด‚ เดšเต†เดฏเตเดคเดพเตฝ, เดตเตเดฏเตผเดคเตเดฅเดฎเดพเดฏเดฟ เด’เดฐเต เดชเตเดฐเต‹เดธเดธเตผ เด•เต‹เตผ 100% เดจเดฟเดทเตโ€Œเด•เตเดฐเดฟเดฏเดฎเดพเดฏเดฟ เดฒเต‹เดกเตเดšเต†เดฏเตเดฏเตเด‚, เด‰เดชเดฏเต‹เด—เดถเต‚เดจเตเดฏเดฎเดพเดฏ เดธเตˆเด•เตเด•เดฟเดณเดฟเตฝ เด•เดฑเด™เตเด™เตเดจเตเดจเต. TaskCompletionSource เด‰เดชเดฏเต‹เด—เดฟเดšเตเดšเต เดจเดฟเด™เตเด™เตพเด•เตเด•เต เดˆ เด•เต‹เดกเต เดŽเดณเตเดชเตเดชเดคเตเดคเดฟเตฝ เดฑเต€เดฎเต‡เด•เตเด•เต เดšเต†เดฏเตเดฏเดพเดจเตเด‚ เดฎเตเด•เดณเดฟเตฝ เดคเดฟเดฐเดฟเดšเตเดšเดฑเดฟเดžเตเดž เดŽเดฒเตเดฒเดพ เดชเตเดฐเดถเตเดจเด™เตเด™เดณเตเด‚ เดชเดฐเดฟเดนเดฐเดฟเด•เตเด•เดพเดจเตเด‚ เด•เดดเดฟเดฏเตเด‚:

class LongPollingApi {

    private Dictionary<int, TaskCompletionSource<Msg>> tasks;

    public async Task<Msg> AcceptMessageAsync(int userId, int duration) {

        var cs = new TaskCompletionSource<Msg>();
        tasks[userId] = cs;
        await Task.WhenAny(Task.Delay(duration), cs.Task);
        return cs.Task.IsCompleted ? cs.Task.Result : null;
    }

    public void SendMessage(int userId, Msg m) {

        if (tasks.TryGetValue(userId, out var completionSource))
            completionSource.SetResult(m);
    }
}

เดˆ เด•เต‹เดกเต เดจเดฟเตผเดฎเตเดฎเดพเดฃเดคเตเดคเดฟเดจเต เดคเดฏเตเดฏเดพเดฑเดฒเตเดฒ, เดฎเดฑเดฟเดšเตเดšเต เด’เดฐเต เดกเต†เดฎเต‹ เดฎเดพเดคเตเดฐเดฎเดพเดฃเต. เดฏเดฅเดพเตผเดคเตเดฅ เดธเดจเตเดฆเตผเดญเด™เตเด™เดณเดฟเตฝ เด‡เดคเต เด‰เดชเดฏเต‹เด—เดฟเด•เตเด•เตเดจเตเดจเดคเดฟเดจเต, เด†เดฐเตเด‚ เดชเตเดฐเดคเต€เด•เตเดทเดฟเด•เตเด•เดพเดคเตเดค เดธเดฎเดฏเดคเตเดคเต เด’เดฐเต เดธเดจเตเดฆเต‡เดถเด‚ เดตเดฐเตเดฎเตเดชเต‹เตพ เดธเดพเดนเดšเดฐเตเดฏเด‚ เด•เตˆเด•เดพเดฐเตเดฏเด‚ เดšเต†เดฏเตเดฏเต‡เดฃเตเดŸเดคเต เด†เดตเดถเตเดฏเดฎเดพเดฃเต: เดˆ เดธเดพเดนเดšเดฐเตเดฏเดคเตเดคเดฟเตฝ, AsseptMessageAsync เดฐเต€เดคเดฟ เด‡เดคเดฟเดจเด•เด‚ เดชเต‚เตผเดคเตเดคเดฟเดฏเดพเด•เตเด•เดฟเดฏ เดŸเดพเดธเตโ€Œเด•เตเด•เต เดคเดฟเดฐเดฟเด•เต† เดจเตฝเด•เตเด‚. เด‡เดคเดพเดฃเต เดเดฑเตเดฑเดตเตเด‚ เดธเดพเดงเดพเดฐเดฃเดฎเดพเดฏ เด•เต‡เดธเต เดŽเด™เตเด•เดฟเตฝ, ValueTask เด‰เดชเดฏเต‹เด—เดฟเด•เตเด•เตเดจเตเดจเดคเดฟเดจเต†เด•เตเด•เตเดฑเดฟเดšเตเดšเต เดจเดฟเด™เตเด™เตพเด•เตเด•เต เดšเดฟเดจเตเดคเดฟเด•เตเด•เดพเด‚.

เดžเด™เตเด™เตพเด•เตเด•เต เด’เดฐเต เดธเดจเตเดฆเต‡เดถเดคเตเดคเดฟเดจเตเดณเตเดณ เด…เดญเตเดฏเตผเดคเตเดฅเดจ เดฒเดญเดฟเด•เตเด•เตเดฎเตเดชเต‹เตพ, เดžเด™เตเด™เตพ เดจเดฟเด˜เดฃเตเดŸเตเดตเดฟเตฝ เด’เดฐเต TaskCompletionSource เดธเตƒเดทเตเดŸเดฟเด•เตเด•เตเด•เดฏเตเด‚ เดธเตเดฅเดพเดชเดฟเด•เตเด•เตเด•เดฏเตเด‚ เดšเต†เดฏเตเดฏเตเดจเตเดจเต, เดคเตเดŸเตผเดจเตเดจเต เด†เดฆเตเดฏเด‚ เดŽเดจเตเดคเดพเดฃเต เดธเด‚เดญเดตเดฟเด•เตเด•เตเดจเตเดจเดคเต†เดจเตเดจเต เด•เดพเดคเตเดคเดฟเดฐเดฟเด•เตเด•เตเด•: เดจเดฟเตผเดฆเตเดฆเดฟเดทเตเดŸ เดธเดฎเดฏ เด‡เดŸเดตเต‡เดณ เด•เดพเดฒเดนเดฐเดฃเดชเตเดชเต†เดŸเตเด‚ เด…เดฒเตเดฒเต†เด™เตเด•เดฟเตฝ เด’เดฐเต เดธเดจเตเดฆเต‡เดถเด‚ เดฒเดญเดฟเด•เตเด•เตเด‚.

เดฎเต‚เดฒเตเดฏ เดŸเดพเดธเตเด•เต: เดŽเดจเตเดคเตเด•เตŠเดฃเตเดŸเต, เดŽเด™เตเด™เดจเต†

เดฏเต€เตฝเดกเต เดฑเดฟเดŸเตเดŸเต‡เตบ เด“เดชเตเดชเดฑเต‡เดฑเตเดฑเตผ เดชเต‹เดฒเต†เดฏเตเดณเตเดณ เด…เดธเดฟเตปเด•เต/เดตเต†เดฏเตเดฑเตเดฑเต เด“เดชเตเดชเดฑเต‡เดฑเตเดฑเตผเดฎเดพเตผ, เดˆ เดฐเต€เดคเดฟเดฏเดฟเตฝ เดจเดฟเดจเตเดจเต เด’เดฐเต เดธเตเดฑเตเดฑเต‡เดฑเตเดฑเต เดฎเต†เดทเต€เตป เดธเตƒเดทเตเดŸเดฟเด•เตเด•เตเดจเตเดจเต, เด‡เดคเต เด’เดฐเต เดชเตเดคเดฟเดฏ เด’เดฌเตโ€Œเดœเด•เตเดฑเตเดฑเดฟเดจเตเดฑเต† เดธเตƒเดทเตโ€ŒเดŸเดฟเดฏเดพเดฃเต, เด‡เดคเต เดฎเดฟเด•เตเด•เดตเดพเดฑเตเด‚ เดŽเดฒเตเดฒเดพเดฏเตโ€Œเดชเตเดชเต‹เดดเตเด‚ เดชเตเดฐเดงเดพเดจเดฎเดฒเตเดฒ, เดŽเดจเตเดจเดพเตฝ เด…เดชเต‚เตผเดต เดธเดจเตเดฆเตผเดญเด™เตเด™เดณเดฟเตฝ เด‡เดคเต เด’เดฐเต เดชเตเดฐเดถเตโ€Œเดจเด‚ เดธเตƒเดทเตโ€ŒเดŸเดฟเดšเตเดšเต‡เด•เตเด•เดพเด‚. เดˆ เด•เต‡เดธเต เดถเดฐเดฟเด•เตเด•เตเด‚ เดชเดฒเดชเตเดชเต‹เดดเตเด‚ เดตเดฟเดณเดฟเด•เตเด•เดชเตเดชเต†เดŸเตเดจเตเดจ เด’เดฐเต เดฐเต€เดคเดฟเดฏเดพเดฏเดฟเดฐเดฟเด•เตเด•เดพเด‚, เดจเดฎเตเดฎเตพ เดธเด‚เดธเดพเดฐเดฟเด•เตเด•เตเดจเตเดจเดคเต เดธเต†เด•เตเด•เตปเดกเดฟเตฝ เดชเดคเดฟเดจเดพเดฏเดฟเดฐเด•เตเด•เดฃเด•เตเด•เดฟเดจเต เด•เต‹เดณเตเด•เดณเต†เด•เตเด•เตเดฑเดฟเดšเตเดšเดพเดฃเต. เด…เดคเตเดคเดฐเด‚ เด’เดฐเต เดฐเต€เดคเดฟ เดฎเดฟเด•เตเด• เด•เต‡เดธเตเด•เดณเดฟเดฒเตเด‚ เดŽเดฒเตเดฒเดพ เด•เดพเดคเตเดคเดฟเดฐเดฟเด•เตเด•เตเดจเตเดจ เดฐเต€เดคเดฟเด•เดณเต†เดฏเตเด‚ เดฎเดฑเดฟเด•เดŸเดจเตเดจเต เดซเดฒเด‚ เดจเตฝเด•เตเดจเตเดจ เดคเดฐเดคเตเดคเดฟเดฒเดพเดฃเต เดŽเดดเตเดคเดฟเดฏเดคเต†เด™เตเด•เดฟเตฝ, .NET เด‡เดคเต เด’เดชเตเดฑเตเดฑเดฟเดฎเตˆเดธเต เดšเต†เดฏเตเดฏเตเดจเตเดจเดคเดฟเดจเตเดณเตเดณ เด’เดฐเต เดŸเต‚เตพ เดจเตฝเด•เตเดจเตเดจเต - ValueTask เด˜เดŸเดจ. เด‡เดคเต เดตเตเดฏเด•เตเดคเดฎเดพเด•เตเด•เตเดจเตเดจเดคเดฟเดจเต, เด…เดคเดฟเดจเตเดฑเต† เด‰เดชเดฏเต‹เด—เดคเตเดคเดฟเดจเตเดฑเต† เด’เดฐเต เด‰เดฆเดพเดนเดฐเดฃเด‚ เดจเต‹เด•เตเด•เดพเด‚: เดจเดฎเตเดฎเตพ เดชเดฒเดชเตเดชเต‹เดดเตเด‚ เดชเต‹เด•เตเดจเตเดจ เด’เดฐเต เด•เดพเดทเต† เด‰เดฃเตเดŸเต. เด…เดคเดฟเตฝ เดšเดฟเดฒ เดฎเต‚เดฒเตเดฏเด™เตเด™เดณเตเดฃเตเดŸเต, เดคเตเดŸเตผเดจเตเดจเต เดžเด™เตเด™เตพ เด…เดต เดคเดฟเดฐเดฟเด•เต† เดจเตฝเด•เตเด‚; เด‡เดฒเตเดฒเต†เด™เตเด•เดฟเตฝ, เด…เดต เดฒเดญเดฟเด•เตเด•เตเดจเตเดจเดคเดฟเดจเต เดžเด™เตเด™เตพ เด•เตเดฑเดšเตเดšเต เดธเตเดฒเต‹ เดเด’เดฏเดฟเดฒเต‡เด•เตเด•เต เดชเต‹เด•เตเดจเตเดจเต. เดฐเดฃเตเดŸเดพเดฎเดคเตเดคเต‡เดคเต เด…เดธเดฎเดจเตเดตเดฟเดคเดฎเดพเดฏเดฟ เดšเต†เดฏเตเดฏเดพเตป เดžเดพเตป เด†เด—เตเดฐเดนเดฟเด•เตเด•เตเดจเตเดจเต, เด…เดคเดพเดฏเดคเต เดฎเตเดดเตเดตเตป เดฐเต€เดคเดฟเดฏเตเด‚ เด…เดธเดฎเดจเตเดตเดฟเดคเดฎเดพเดฏเดฟ เดฎเดพเดฑเตเดจเตเดจเต. เด…เดคเดฟเดจเดพเตฝ, เดฐเต€เดคเดฟ เดŽเดดเตเดคเตเดจเตเดจเดคเดฟเดจเตเดณเตเดณ เดตเตเดฏเด•เตเดคเดฎเดพเดฏ เดฎเดพเตผเด—เตเด—เด‚ เด‡เดชเตเดฐเด•เดพเดฐเดฎเดพเดฃเต:

public async Task<string> GetById(int id) {

    if (cache.TryGetValue(id, out string val))
        return val;
    return await RequestById(id);
}

เด•เตเดฑเดšเตเดšเต เด’เดชเตเดฑเตเดฑเดฟเดฎเตˆเดธเต เดšเต†เดฏเตเดฏเดพเดจเตเดณเตเดณ เด†เด—เตเดฐเดนเดตเตเด‚ เดˆ เด•เต‹เดกเต เด•เด‚เดชเตˆเตฝ เดšเต†เดฏเตเดฏเตเดฎเตเดชเต‹เตพ เดฑเต‹เดธเตเดฒเดฟเตป เดŽเดจเตเดคเต เดธเตƒเดทเตเดŸเดฟเด•เตเด•เตเดฎเต†เดจเตเดจ เดญเดฏเดตเตเด‚ เด•เดพเดฐเดฃเด‚, เดจเดฟเด™เตเด™เตพเด•เตเด•เต เดˆ เด‰เดฆเดพเดนเดฐเดฃเด‚ เด‡เดจเดฟเดชเตเดชเดฑเดฏเตเดจเตเดจ เดฐเต€เดคเดฟเดฏเดฟเตฝ เดฎเดพเดฑเตเดฑเดฟเดฏเต†เดดเตเดคเดพเด‚:

public Task<string> GetById(int id) {

    if (cache.TryGetValue(id, out string val))
        return Task.FromResult(val);
    return RequestById(id);
}

เดตเดพเดธเตเดคเดตเดคเตเดคเดฟเตฝ, เดˆ เด•เต‡เดธเดฟเดฒเต† เด’เดชเตเดฑเตเดฑเดฟเดฎเตฝ เดชเดฐเดฟเดนเดพเดฐเด‚ เดนเต‹เดŸเตเดŸเต-เดชเดพเดคเตเดคเต เด’เดชเตเดฑเตเดฑเดฟเดฎเตˆเดธเต เดšเต†เดฏเตเดฏเตเด• เดŽเดจเตเดจเดคเดพเดฃเต, เด…เดคเดพเดฏเดคเต, เด…เดจเดพเดตเดถเตเดฏเดฎเดพเดฏ เด…เดฒเต‹เด•เตเด•เต‡เดทเดจเตเด•เดณเดฟเดฒเตเดฒเดพเดคเต† เดจเดฟเด˜เดฃเตเดŸเตเดตเดฟเตฝ เดจเดฟเดจเตเดจเต เด’เดฐเต เดฎเต‚เดฒเตเดฏเด‚ เดจเต‡เดŸเตเด•เดฏเตเด‚ เดœเดฟเดธเดฟเดฏเดฟเตฝ เดฒเต‹เดกเตเดšเต†เดฏเตเดฏเตเด•เดฏเตเด‚ เดšเต†เดฏเตเดฏเตเด•, เด…เดคเตเดคเดฐเด‚ เด…เดชเต‚เตผเดต เดธเดจเตเดฆเตผเดญเด™เตเด™เดณเดฟเตฝ เดกเดพเดฑเตเดฑเดฏเตเด•เตเด•เดพเดฏเดฟ เดเด’เดฏเดฟเดฒเต‡เด•เตเด•เต เดชเต‹เด•เต‡เดฃเตเดŸเดฟเดตเดฐเตเดฎเตเดชเต‹เตพ. , เดŽเดฒเตเดฒเดพเด‚ เดชเดดเดฏ เดฐเต€เดคเดฟเดฏเดฟเตฝ เดชเตเดฒเดธเต / เดฎเตˆเดจเดธเต เด†เดฏเดฟ เดคเตเดŸเดฐเตเด‚:

public ValueTask<string> GetById(int id) {

    if (cache.TryGetValue(id, out string val))
        return new ValueTask<string>(val);
    return new ValueTask<string>(RequestById(id));
}

เดˆ เด•เต‹เดกเดฟเดฒเต‡เด•เตเด•เต เดจเดฎเตเด•เตเด•เต เดธเต‚เด•เตเดทเตเดฎเดฎเดพเดฏเดฟ เดจเต‹เด•เตเด•เดพเด‚: เด•เดพเดทเต†เดฏเดฟเตฝ เด’เดฐเต เดฎเต‚เดฒเตเดฏเดฎเตเดฃเตเดŸเต†เด™เตเด•เดฟเตฝ, เดžเด™เตเด™เตพ เด’เดฐเต เด˜เดŸเดจ เดธเตƒเดทเตเดŸเดฟเด•เตเด•เตเดจเตเดจเต, เด…เดฒเตเดฒเดพเดคเตเดคเดชเด•เตเดทเด‚ เดฏเดฅเดพเตผเดคเตเดฅ เดšเตเดฎเดคเดฒ เด…เตผเดคเตเดฅเดตเดคเตเดคเดพเดฏ เด’เดจเตเดจเดฟเตฝ เดชเตŠเดคเดฟเดžเตเดžเดคเดพเดฏเดฟเดฐเดฟเด•เตเด•เตเด‚. เดˆ เด•เต‹เดกเต เดเดคเต เดชเดพเดคเดฏเดฟเดฒเดพเดฃเต เดŽเด•เตเดธเดฟเด•เตเดฏเต‚เดŸเตเดŸเต เดšเต†เดฏเตเดคเดคเต†เดจเตเดจเต เด•เต‹เดณเดฟเด‚เด—เต เด•เต‹เดกเต เดถเตเดฐเดฆเตเดงเดฟเด•เตเด•เตเดจเตเดจเดฟเดฒเตเดฒ: C# เดตเดพเด•เตเดฏเด˜เดŸเดจเดฏเตเดŸเต† เดตเต€เด•เตเดทเดฃเด•เต‹เดฃเดฟเตฝ เดจเดฟเดจเตเดจเต ValueTask, เดˆ เดธเดพเดนเดšเดฐเตเดฏเดคเตเดคเดฟเตฝ เด’เดฐเต เดธเดพเดงเดพเดฐเดฃ เดŸเดพเดธเตโ€Œเด•เตเด•เต เดชเต‹เดฒเต† เดคเดจเตเดจเต† เดชเตเดฐเดตเตผเดคเตเดคเดฟเด•เตเด•เตเด‚.

เดŸเดพเดธเตโ€Œเด•เต เดทเต†เดกเตเดฏเต‚เดณเตผเดฎเดพเตผ: เดŸเดพเดธเตโ€Œเด•เต เดฒเต‹เดžเตเดšเต เดธเตเดŸเตเดฐเดพเดฑเตเดฑเดœเดฟเด•เตพ เด•เตˆเด•เดพเดฐเตเดฏเด‚ เดšเต†เดฏเตเดฏเตเดจเตเดจเต

เดžเดพเตป เดชเดฐเดฟเด—เดฃเดฟเด•เตเด•เดพเตป เด†เด—เตเดฐเดนเดฟเด•เตเด•เตเดจเตเดจ เด…เดŸเตเดคเตเดค API เด•เตเดฒเดพเดธเต เด†เดฃเต เดŸเดพเดธเตเด•เต เดทเต†เดกเตเดฏเต‚เดณเตผ เด…เดคเดฟเดจเตเดฑเต† เดกเต†เดฑเดฟเดตเต‡เดฑเตเดฑเต€เดตเตเด•เดณเตเด‚. เดคเตเดฐเต†เดกเตเด•เดณเดฟเดฒเตเดŸเดจเต€เดณเด‚ เดŸเดพเดธเตโ€Œเด•เตเด•เตเด•เตพ เดตเดฟเดคเดฐเดฃเด‚ เดšเต†เดฏเตเดฏเตเดจเตเดจเดคเดฟเดจเตเดณเตเดณ เดคเดจเตเดคเตเดฐเด™เตเด™เตพ เด•เตˆเด•เดพเดฐเตเดฏเด‚ เดšเต†เดฏเตเดฏเดพเดจเตเดณเตเดณ เด•เดดเดฟเดตเต TPL-เดจเต เด‰เดฃเตเดŸเต†เดจเตเดจเต เดžเดพเตป เดฎเตเด•เดณเดฟเตฝ เดธเต‚เดšเดฟเดชเตเดชเดฟเดšเตเดšเต. เดŸเดพเดธเตเด•เต เดทเต†เดกเตเดฏเต‚เดณเตผ เด•เตเดฒเดพเดธเดฟเดจเตเดฑเต† เดชเดฟเตปเด—เดพเดฎเดฟเด•เดณเดฟเตฝ เด‡เดคเตเดคเดฐเด‚ เดคเดจเตเดคเตเดฐเด™เตเด™เตพ เดจเดฟเตผเดตเดšเดฟเดšเตเดšเดฟเดฐเดฟเด•เตเด•เตเดจเตเดจเต. เดจเดฟเด™เตเด™เตพเด•เตเด•เต เด†เดตเดถเตเดฏเดฎเดพเดฏเต‡เด•เตเด•เดพเดตเตเดจเตเดจ เดเดคเตŠเดฐเต เดคเดจเตเดคเตเดฐเดตเตเด‚ เดฒเตˆเดฌเตเดฐเดฑเดฟเดฏเดฟเตฝ เด•เดฃเตเดŸเต†เดคเตเดคเดพเดจเดพเด•เตเด‚. เดธเดฎเดพเดจเตเดคเดฐ เดตเดฟเดชเตเดฒเต€เด•เดฐเดฃเด™เตเด™เตพ, เดฎเตˆเด•เตเดฐเต‹เดธเต‹เดซเตเดฑเตเดฑเต เดตเดฟเด•เดธเดฟเดชเตเดชเดฟเดšเตเดšเต†เดŸเตเดคเตเดคเดคเต, เดŽเดจเตเดจเดพเตฝ .NET-เดจเตเดฑเต† เดญเดพเด—เดฎเดฒเตเดฒ, เดฎเดฑเดฟเดšเตเดšเต เด’เดฐเต เดจเตเดฏเต‚เดœเต†เดฑเตเดฑเต เดชเดพเด•เตเด•เต‡เดœเดพเดฏเดฟ เดตเดฟเดคเดฐเดฃเด‚ เดšเต†เดฏเตเดฏเตเดจเตเดจเต. เด…เดตเดฏเดฟเตฝ เดšเดฟเดฒเดคเต เดจเดฎเตเด•เตเด•เต เดนเตเดฐเดธเตเดตเดฎเดพเดฏเดฟ เดจเต‹เด•เตเด•เดพเด‚:

  • CurrentThreadTaskScheduler โ€” เดจเดฟเดฒเดตเดฟเดฒเต† เดคเตเดฐเต†เดกเดฟเตฝ เดŸเดพเดธเตโ€Œเด•เตเด•เตเด•เตพ เดจเดฟเตผเดตเตเดตเดนเดฟเด•เตเด•เตเดจเตเดจเต
  • เดฒเดฟเดฎเดฟเดฑเตเดฑเดกเต เด•เตบเด•เดฑเตปเดธเดฟ เดฒเต†เดตเตฝ เดŸเดพเดธเตเด•เต เดทเต†เดกเตเดฏเต‚เดณเตผ - เด•เตบเดธเตโ€ŒเดŸเตเดฐเด•เตโ€ŒเดŸเดฑเดฟเตฝ เด…เด‚เด—เต€เด•เดฐเดฟเด•เตเด•เดชเตเดชเต†เดŸเตเดŸ N เดชเดฐเดพเดฎเต€เดฑเตเดฑเตผ เด‰เดชเดฏเต‹เด—เดฟเดšเตเดšเต เด’เดฐเต‡เดธเดฎเดฏเด‚ เดจเดฟเตผเดตเตเดตเดนเดฟเด•เตเด•เตเดจเตเดจ เดŸเดพเดธเตโ€Œเด•เตเด•เตเด•เดณเตเดŸเต† เดŽเดฃเตเดฃเด‚ เดชเดฐเดฟเดฎเดฟเดคเดชเตเดชเต†เดŸเตเดคเตเดคเตเดจเตเดจเต.
  • เด“เตผเดกเตผ เดšเต†เดฏเตเดค เดŸเดพเดธเตเด•เต เดทเต†เดกเตเดฏเต‚เดณเตผ โ€” LimitedConcurrencyLevelTaskScheduler(1) เด†เดฏเดฟ เดจเดฟเตผเดตเดšเดฟเดšเตเดšเดฟเดฐเดฟเด•เตเด•เตเดจเตเดจเต, เด…เดคเดฟเดจเดพเตฝ เดšเตเดฎเดคเดฒเด•เตพ เดคเตเดŸเตผเดšเตเดšเดฏเดพเดฏเดฟ เดจเดŸเดชเตเดชเดฟเดฒเดพเด•เตเด•เตเด‚.
  • WorkStealingTaskScheduler - เดจเดŸเดชเตเดชเดฟเดฒเดพเด•เตเด•เตเดจเตเดจเต เดœเต‹เดฒเดฟ-เดฎเต‹เดทเตเดŸเดฟเด•เตเด•เตฝ เดšเตเดฎเดคเดฒ เดตเดฟเดคเดฐเดฃเดคเตเดคเดฟเดฒเต‡เด•เตเด•เตเดณเตเดณ เดธเดฎเต€เดชเดจเด‚. เด…เดŸเดฟเดธเตเดฅเดพเดจเดชเดฐเดฎเดพเดฏเดฟ เด‡เดคเต เด’เดฐเต เดชเตเดฐเดคเตเดฏเต‡เด• ThreadPool เด†เดฃเต. .NET ThreadPool-เตฝ เดŽเดฒเตเดฒเดพ เด†เดชเตเดฒเดฟเด•เตเด•เต‡เดทเดจเตเด•เตพเด•เตเด•เตเดฎเตเดณเตเดณ เด’เดฐเต เดธเตเดฑเตเดฑเดพเดฑเตเดฑเดฟเด•เต เด•เตเดฒเดพเดธเต เด†เดฃเต เดŽเดจเตเดจ เดชเตเดฐเดถเตเดจเด‚ เดชเดฐเดฟเดนเดฐเดฟเด•เตเด•เตเดจเตเดจเต, เด…เดคเดพเดฏเดคเต เดชเตเดฐเต‹เด—เตเดฐเดพเดฎเดฟเดจเตเดฑเต† เด’เดฐเต เดญเดพเด—เดคเตเดคเต เด…เดคเดฟเดจเตเดฑเต† เด“เดตเตผเดฒเต‹เดกเต เด…เดฒเตเดฒเต†เด™เตเด•เดฟเตฝ เดคเต†เดฑเตเดฑเดพเดฏ เด‰เดชเดฏเต‹เด—เด‚ เดฎเดฑเตเดฑเตŠเดจเตเดจเดฟเตฝ เดชเดพเตผเดถเตเดตเดซเดฒเด™เตเด™เดณเดฟเดฒเต‡เด•เตเด•เต เดจเดฏเดฟเดšเตเดšเต‡เด•เตเด•เดพเด‚. เดฎเดพเดคเตเดฐเดฎเดฒเตเดฒ, เด…เดคเตเดคเดฐเด‚ เดตเตˆเด•เดฒเตเดฏเด™เตเด™เดณเตเดŸเต† เด•เดพเดฐเดฃเด‚ เดฎเดจเดธเตเดธเดฟเดฒเดพเด•เตเด•เดพเตป เดตเดณเดฐเต† เดฌเตเดฆเตเดงเดฟเดฎเตเดŸเตเดŸเดพเดฃเต. เด…เดคเต. เดคเตเดฐเต†เดกเตโ€Œเดชเต‚เดณเดฟเดจเตเดฑเต† เด‰เดชเดฏเต‹เด—เด‚ เด†เด•เตเดฐเดฎเดฃเดพเดคเตเดฎเด•เดตเตเด‚ เดชเตเดฐเดตเดšเดจเดพเดคเต€เดคเดตเตเดฎเดพเด•เดพเดจเดฟเดŸเดฏเตเดณเตเดณ เดชเตเดฐเต‹เด—เตเดฐเดพเดฎเดฟเดจเตเดฑเต† เดญเดพเด—เด™เตเด™เดณเดฟเตฝ เดชเตเดฐเดคเตเดฏเต‡เด• เดตเตผเด•เตเด•เตโ€Œเดธเตเดฑเตเดฑเต€เดฒเดฟเด‚เด—เต เดŸเดพเดธเตโ€Œเด•เต เดทเต†เดกเตเดฏเต‚เดณเดฑเตเด•เตพ เด‰เดชเดฏเต‹เด—เดฟเด•เตเด•เต‡เดฃเตเดŸ เด†เดตเดถเตเดฏเดฎเตเดฃเตเดŸเดพเด•เดพเด‚.
  • เด•เตเดฏเต‚เดกเต เดŸเดพเดธเตเด•เต เดทเต†เดกเตเดฏเต‚เดณเตผ โ€” เดฎเตเตปเด—เดฃเดจเดพ เด•เตเดฏเต‚ เดจเดฟเดฏเดฎเด™เตเด™เตพเด•เตเด•เดจเตเดธเตƒเดคเดฎเดพเดฏเดฟ เดšเตเดฎเดคเดฒเด•เตพ เดจเดฟเตผเดตเดนเดฟเด•เตเด•เดพเตป เดจเดฟเด™เตเด™เดณเต† เด…เดจเตเดตเดฆเดฟเด•เตเด•เตเดจเตเดจเต
  • ThreadPerTaskScheduler โ€” เด“เดฐเต‹ เดŸเดพเดธเตเด•เตเด•เดฟเดจเตเด‚ เด’เดฐเต เดชเตเดฐเดคเตเดฏเต‡เด• เดคเตเดฐเต†เดกเต เดธเตƒเดทเตเดŸเดฟเด•เตเด•เตเดจเตเดจเต, เด…เดคเต เด…เดคเดฟเตฝ เดจเดŸเดชเตเดชเดฟเดฒเดพเด•เตเด•เตเดจเตเดจเต. เดชเตเดฐเดตเดšเดจเดพเดคเต€เดคเดฎเดพเดฏ เดธเดฎเดฏเดฎเต†เดŸเตเด•เตเด•เตเดจเตเดจ เดœเต‹เดฒเดฟเด•เตพเด•เตเด•เต เด‡เดคเต เด‰เดชเดฏเต‹เด—เดชเตเดฐเดฆเดฎเดพเด•เตเด‚.

เดจเดฒเตเดฒ เดตเดฟเดถเดฆเดฎเดพเดฏเดฟ เด‰เดฃเตเดŸเต เด’เดฐเต เดฒเต‡เด–เดจเด‚ เดฎเตˆเด•เตเดฐเต‹เดธเต‹เดซเตเดฑเตเดฑเต เดฌเตเดฒเต‹เด—เดฟเดฒเต† เดŸเดพเดธเตเด•เต เดทเต†เดกเตเดฏเต‚เดณเดฑเตเด•เดณเต† เด•เตเดฑเดฟเดšเตเดšเต.

เดŸเดพเดธเตโ€Œเด•เตเด•เตเด•เดณเตเดฎเดพเดฏเดฟ เดฌเดจเตเดงเดชเตเดชเต†เดŸเตเดŸ เดŽเดฒเตเดฒเดพเดฑเตเดฑเดฟเดจเตเดฑเต†เดฏเตเด‚ เดธเต—เด•เดฐเตเดฏเดชเตเดฐเดฆเดฎเดพเดฏ เดกเต€เดฌเด—เตเด—เดฟเด‚เด—เดฟเดจเดพเดฏเดฟ, เดตเดฟเดทเตเดตเตฝ เดธเตเดฑเตเดฑเตเดกเดฟเดฏเต‹เดฏเดฟเตฝ เด’เดฐเต เดŸเดพเดธเตโ€Œเด•เต เดตเดฟเตปเดกเต‹ เด‰เดฃเตเดŸเต. เดˆ เดตเดฟเตปเดกเต‹เดฏเดฟเตฝ เดจเดฟเด™เตเด™เตพเด•เตเด•เต เดŸเดพเดธเตโ€Œเด•เตเด•เดฟเดจเตเดฑเต† เดจเดฟเดฒเดตเดฟเดฒเต† เด…เดตเดธเตเดฅ เด•เดพเดฃเดพเดจเตเด‚ เดจเดฟเดฒเดตเดฟเตฝ เดจเดŸเดชเตเดชเดฟเดฒเดพเด•เตเด•เตเดจเตเดจ เด•เต‹เดกเดฟเดจเตเดฑเต† เดตเดฐเดฟเดฏเดฟเดฒเต‡เด•เตเด•เต เดชเต‹เด•เดพเดจเตเด‚ เด•เดดเดฟเดฏเตเด‚.

.NET: เดฎเตพเดŸเตเดŸเดฟเดคเตเดฐเต†เดกเดฟเด‚เด—เตเด‚ เด…เดธเดฟเตปเด•เตเดฐเดฃเดฟเดฏเตเด‚ เด‰เดชเดฏเต‹เด—เดฟเดšเตเดšเต เดชเตเดฐเดตเตผเดคเตเดคเดฟเด•เตเด•เตเดจเตเดจเดคเดฟเดจเตเดณเตเดณ เด‰เดชเด•เดฐเดฃเด™เตเด™เตพ. เดญเดพเด—เด‚ 1

PLinq เด‰เด‚ เดชเดพเดฐเดฒเตฝ เด•เตเดฒเดพเดธเตเด‚

เดŸเดพเดธเตโ€Œเด•เตเด•เตเด•เตพเด•เตเด•เตเด‚ เด…เดตเดฏเต†เด•เตเด•เตเดฑเดฟเดšเตเดšเต เดชเดฑเดžเตเดžเดฟเดŸเตเดŸเตเดณเตเดณ เดŽเดฒเตเดฒเดพเดคเตเดคเดฟเดจเตเด‚ เดชเตเดฑเดฎเต‡, .NET-เตฝ เดฐเดธเด•เดฐเดฎเดพเดฏ เดฐเดฃเตเดŸเต เดŸเต‚เดณเตเด•เตพ เด•เต‚เดŸเดฟเดฏเตเดฃเตเดŸเต: PLinq (Linq2Parallel) เด‰เด‚ เดธเดฎเดพเดจเตเดคเดฐ เด•เตเดฒเดพเดธเตเด‚. เด’เดจเตเดจเดฟเดฒเดงเดฟเด•เด‚ เดคเตเดฐเต†เดกเตเด•เดณเดฟเดฒเต† เดŽเดฒเตเดฒเดพ เดฒเดฟเด™เตเด•เต เดชเตเดฐเดตเตผเดคเตเดคเดจเด™เตเด™เดณเตเดŸเต†เดฏเตเด‚ เดธเดฎเดพเดจเตเดคเดฐ เดจเดฟเตผเดตเตเดตเดนเดฃเด‚ เด†เดฆเตเดฏเดคเตเดคเต‡เดคเต เดตเดพเด—เตเดฆเดพเดจเด‚ เดšเต†เดฏเตเดฏเตเดจเตเดจเต. WithDegreeOfParallelism เดตเดฟเดชเตเดฒเต€เด•เดฐเดฃ เดฐเต€เดคเดฟ เด‰เดชเดฏเต‹เด—เดฟเดšเตเดšเต เดคเตเดฐเต†เดกเตเด•เดณเตเดŸเต† เดŽเดฃเตเดฃเด‚ เด•เต‹เตบเดซเดฟเด—เตผ เดšเต†เดฏเตเดฏเดพเดตเตเดจเตเดจเดคเดพเดฃเต. เดจเดฟเตผเดญเดพเด—เตเดฏเดตเดถเดพเตฝ, เดฎเดฟเด•เตเด•เดชเตเดชเต‹เดดเตเด‚ PLinq-เดจเต เด…เดคเดฟเดจเตเดฑเต† เดกเดฟเดซเต‹เตพเดŸเตเดŸเต เดฎเต‹เดกเดฟเตฝ เดจเดฟเด™เตเด™เดณเตเดŸเต† เดกเดพเดฑเตเดฑเดพ เด‰เดฑเดตเดฟเดŸเดคเตเดคเดฟเดจเตเดฑเต† เด‡เดจเตเดฑเต‡เดฃเดฒเตเด•เดณเต† เด•เตเดฑเดฟเดšเตเดšเต เด•เดพเดฐเตเดฏเดฎเดพเดฏ เดตเต‡เด—เดค เดตเตผเดฆเตเดงเดฟเดชเตเดชเดฟเด•เตเด•เตเดจเตเดจเดคเดฟเดจเต เด†เดตเดถเตเดฏเดฎเดพเดฏ เดตเดฟเดตเดฐเด™เตเด™เตพ เด‡เดฒเตเดฒ, เดฎเดฑเตเดตเดถเดคเตเดคเต, เดถเตเดฐเดฎเดฟเด•เตเด•เตเดจเตเดจเดคเดฟเดจเตเดณเตเดณ เดšเต†เดฒเดตเต เดตเดณเดฐเต† เด•เตเดฑเดตเดพเดฃเต: เดจเดฟเด™เตเด™เตพ เดฎเตเดฎเตเดชเต AsParallel เดฐเต€เดคเดฟ เดตเดฟเดณเดฟเด•เตเด•เต‡เดฃเตเดŸเดคเตเดฃเตเดŸเต. เดฒเดฟเด™เตเด•เต เดฐเต€เดคเดฟเด•เดณเตเดŸเต† เดถเตƒเด‚เด–เดฒเดฏเตเด‚ เดชเตเดฐเด•เดŸเดจ เดชเดฐเดฟเดถเต‹เดงเดจเด•เดณเตเด‚ เดจเดŸเดคเตเดคเตเด•. เดฎเดพเดคเตเดฐเดฎเดฒเตเดฒ, เดชเดพเตผเดŸเตเดŸเต€เดทเดจเตเด•เตพ เดฎเต†เด•เตเด•เดพเดจเดฟเดธเด‚ เด‰เดชเดฏเต‹เด—เดฟเดšเตเดšเต เดจเดฟเด™เตเด™เดณเตเดŸเต† เดกเดพเดฑเตเดฑเดพ เด‰เดฑเดตเดฟเดŸเดคเตเดคเดฟเดจเตเดฑเต† เดธเตเดตเดญเดพเดตเดคเตเดคเต†เด•เตเด•เตเดฑเดฟเดšเตเดšเตเดณเตเดณ เด•เต‚เดŸเตเดคเตฝ เดตเดฟเดตเดฐเด™เตเด™เตพ PLinq-เดฒเต‡เด•เตเด•เต เด•เตˆเดฎเดพเดฑเดพเตป เดธเดพเดงเดฟเด•เตเด•เตเด‚. เดจเดฟเด™เตเด™เตพเด•เตเด•เต เด•เต‚เดŸเตเดคเตฝ เดตเดพเดฏเดฟเด•เตเด•เดพเด‚ เด‡เดตเดฟเดŸเต† ะธ เด‡เดตเดฟเดŸเต†.

เดธเดฎเดพเดจเตเดคเดฐ เดธเตเดฑเตเดฑเดพเดฑเตเดฑเดฟเด•เต เด•เตเดฒเดพเดธเต เดธเดฎเดพเดจเตเดคเดฐเดฎเดพเดฏเดฟ เดซเต‹เดฑเต†เดšเตเดšเต เดถเต‡เด–เดฐเดคเตเดคเดฟเดฒเต‚เดŸเต† เด†เดตเตผเดคเตเดคเดฟเด•เตเด•เตเดจเตเดจเดคเดฟเดจเตเด‚ เดซเต‹เตผ เดฒเต‚เดชเตเดชเต เดŽเด•เตเดธเดฟเด•เตเดฏเต‚เดŸเตเดŸเต เดšเต†เดฏเตเดฏเตเดจเตเดจเดคเดฟเดจเตเด‚ เดธเดฎเดพเดจเตเดคเดฐ เด‡เตปเดตเต‹เด•เตเด•เดฟเตฝ เด’เดจเตเดจเดฟเดฒเดงเดฟเด•เด‚ เดกเต†เดฒเดฟเด—เต‡เดฑเตเดฑเตเด•เดณเต† เดŽเด•เตเดธเดฟเด•เตเดฏเต‚เดŸเตเดŸเต เดšเต†เดฏเตเดฏเตเดจเตเดจเดคเดฟเดจเตเดฎเตเดณเตเดณ เดฐเต€เดคเดฟเด•เตพ เดจเตฝเด•เตเดจเตเดจเต. เด•เดฃเด•เตเด•เตเด•เต‚เดŸเตเดŸเดฒเตเด•เตพ เดชเต‚เตผเดคเตเดคเดฟเดฏเดพเด•เตเดจเตเดจเดคเตเดตเดฐเต† เดจเดฟเดฒเดตเดฟเดฒเต† เดคเตเดฐเต†เดกเดฟเดจเตเดฑเต† เดจเดฟเตผเดตเตเดตเดนเดฃเด‚ เดจเดฟเตผเดคเตเดคเตเด‚. เด…เดตเดธเดพเดจ เด†เตผเด—เตเดฏเตเดฎเต†เดจเตเดฑเดพเดฏเดฟ เดชเดพเดฐเดฒเตฝ เด“เดชเตโ€Œเดทเดจเตเด•เตพ เดจเตฝเด•เดฟ เดคเตเดฐเต†เดกเตเด•เดณเตเดŸเต† เดŽเดฃเตเดฃเด‚ เด•เต‹เตบเดซเดฟเด—เตผ เดšเต†เดฏเตเดฏเดพเดตเตเดจเตเดจเดคเดพเดฃเต. เด“เดชเตโ€Œเดทเดจเตเด•เตพ เด‰เดชเดฏเต‹เด—เดฟเดšเตเดšเต เดจเดฟเด™เตเด™เตพเด•เตเด•เต TaskScheduler, CancellationToken เดŽเดจเตเดจเดฟเดตเดฏเตเด‚ เดตเตเดฏเด•เตเดคเดฎเดพเด•เตเด•เดพเด‚.

เด•เดฃเตเดŸเต†เดคเตเดคเดฒเตเด•เตพ

เดžเดพเตป เดˆ เดฒเต‡เด–เดจเด‚ เดŽเดดเตเดคเดพเตป เดคเตเดŸเด™เตเด™เดฟเดฏเดชเตเดชเต‹เตพ, เดŽเดจเตเดฑเต† เดฑเดฟเดชเตเดชเต‹เตผเดŸเตเดŸเดฟเดฒเต† เดธเดพเดฎเด—เตเดฐเดฟเด•เดณเตเด‚ เด…เดคเดฟเดจเตเดถเต‡เดทเด‚ เดŽเดจเตเดฑเต† เดœเต‹เดฒเดฟเด•เตเด•เดฟเดŸเดฏเดฟเตฝ เดžเดพเตป เดถเต‡เด–เดฐเดฟเดšเตเดš เดตเดฟเดตเดฐเด™เตเด™เดณเตเด‚ เด…เดŸเดฟเดธเตเดฅเดพเดจเดฎเดพเด•เตเด•เดฟ, เด‡เดคเต เด‡เดคเตเดฐเดฏเดงเดฟเด•เด‚ เด‰เดฃเตเดŸเดพเด•เตเดฎเต†เดจเตเดจเต เดžเดพเตป เดชเตเดฐเดคเต€เด•เตเดทเดฟเดšเตเดšเดฟเดฐเตเดจเตเดจเดฟเดฒเตเดฒ. เด‡เดชเตเดชเต‹เตพ, เดžเดพเตป เดˆ เดฒเต‡เด–เดจเด‚ เดŸเตˆเดชเตเดชเต เดšเต†เดฏเตเดฏเตเดจเตเดจ เดŸเต†เด•เตเดธเตเดฑเตเดฑเต เดŽเดกเดฟเดฑเตเดฑเตผ, เดชเต‡เดœเต 15 เดชเต‹เดฏเดฟ เดŽเดจเตเดจเต เด†เด•เตเดทเต‡เดชเด•เดฐเดฎเดพเดฏเดฟ เดชเดฑเดฏเตเดฎเตเดชเต‹เตพ, เดžเดพเตป เด‡เดŸเด•เตเด•เดพเดฒ เดซเดฒเด™เตเด™เตพ เดธเด‚เด—เตเดฐเดนเดฟเด•เตเด•เดพเด‚. เดฎเดฑเตเดฑเต เดคเดจเตเดคเตเดฐเด™เตเด™เดณเตเด‚ API-เด•เดณเตเด‚ เดตเดฟเดทเตเดตเตฝ เดŸเต‚เดณเตเด•เดณเตเด‚ เด…เดชเด•เดŸเด™เตเด™เดณเตเด‚ เด…เดŸเตเดคเตเดค เดฒเต‡เด–เดจเดคเตเดคเดฟเตฝ เด‰เตพเดชเตเดชเต†เดŸเตเดคเตเดคเตเด‚.

เดจเดฟเด—เดฎเดจเด™เตเด™เตพ:

  • เด†เดงเตเดจเดฟเด• เดชเดฟเดธเดฟเด•เดณเตเดŸเต† เด‰เดฑเดตเดฟเดŸเด™เตเด™เตพ เด‰เดชเดฏเต‹เด—เดฟเด•เตเด•เตเดจเตเดจเดคเดฟเดจเต เดคเตเดฐเต†เดกเตเด•เตพ, เด…เดธเดฟเตปเด•เตเดฐเดฃเดฟ, เดชเดพเดฐเดฒเดฒเดฟเดธเด‚ เดŽเดจเตเดจเดฟเดตเดฏเดฟเตฝ เดชเตเดฐเดตเตผเดคเตเดคเดฟเด•เตเด•เตเดจเตเดจเดคเดฟเดจเตเดณเตเดณ เด‰เดชเด•เดฐเดฃเด™เตเด™เตพ เดจเดฟเด™เตเด™เตพ เด…เดฑเดฟเดžเตเดžเดฟเดฐเดฟเด•เตเด•เดฃเด‚.
  • .NET-เดจเต เดˆ เด†เดตเดถเตเดฏเด™เตเด™เตพเด•เตเด•เดพเดฏเดฟ เดจเดฟเดฐเดตเดงเดฟ เดตเตเดฏเดคเตเดฏเดธเตเดค เดŸเต‚เดณเตเด•เตพ เด‰เดฃเตเดŸเต
  • เด…เดตเดฏเต†เดฒเตเดฒเดพเด‚ เด’เดฑเตเดฑเดฏเดŸเดฟเด•เตเด•เต เดชเตเดฐเดคเตเดฏเด•เตเดทเดชเตเดชเต†เดŸเตเดŸเดฟเดฒเตเดฒ, เด…เดคเดฟเดจเดพเตฝ เดจเดฟเด™เตเด™เตพเด•เตเด•เต เดชเดฒเดชเตเดชเต‹เดดเตเด‚ เดชเดพเดฐเดฎเตเดชเดฐเตเดฏเดฎเตเดณเตเดณเดต เด•เดฃเตเดŸเต†เดคเตเดคเดพเดจเดพเด•เตเด‚, เดŽเดจเตเดจเดฟเดฐเตเดจเตเดจเดพเดฒเตเด‚, เดชเดดเดฏ API-เด•เตพ เด•เต‚เดŸเตเดคเตฝ เดชเดฐเดฟเดถเตเดฐเดฎเดฟเด•เตเด•เดพเดคเต† เดชเดฐเดฟเดตเตผเดคเตเดคเดจเด‚ เดšเต†เดฏเตเดฏเดพเดจเตเดณเตเดณ เดตเดดเดฟเด•เดณเตเดฃเตเดŸเต.
  • .NET-เดฒเต† เดคเตเดฐเต†เดกเตเด•เดณเตเดฎเดพเดฏเดฟ เดชเตเดฐเดตเตผเดคเตเดคเดฟเด•เตเด•เตเดจเตเดจเดคเต เดคเตเดฐเต†เดกเต, เดคเตเดฐเต†เดกเตโ€Œเดชเต‚เตพ เด•เตเดฒเดพเดธเตเด•เตพ เดชเตเดฐเดคเดฟเดจเดฟเดงเต€เด•เดฐเดฟเด•เตเด•เตเดจเตเดจเต
  • Thread.Abort, Thread.Interrupt, Win32 API TerminateThread เดฐเต€เดคเดฟเด•เตพ เด…เดชเด•เดŸเด•เดฐเดฎเดพเดฃเต, เด…เดต เด‰เดชเดฏเต‹เด—เดฟเด•เตเด•เดพเตป เดถเตเดชเดพเตผเดถ เดšเต†เดฏเตเดคเดฟเดŸเตเดŸเดฟเดฒเตเดฒ. เดชเด•เดฐเด‚, CancellationToken เดฎเต†เด•เตเด•เดพเดจเดฟเดธเด‚ เด‰เดชเดฏเต‹เด—เดฟเด•เตเด•เตเดจเตเดจเดคเดพเดฃเต เดจเดฒเตเดฒเดคเต
  • เด’เดดเตเด•เตเด•เต เดตเดฟเดฒเดชเตเดชเต†เดŸเตเดŸ เด’เดฐเต เดตเดฟเดญเดตเดฎเดพเดฃเต, เด…เดคเดฟเดจเตเดฑเต† เดตเดฟเดคเดฐเดฃเด‚ เดชเดฐเดฟเดฎเดฟเดคเดฎเดพเดฃเต. เดชเดฐเดฟเดชเดพเดŸเดฟเด•เตพเด•เตเด•เดพเดฏเดฟ เด•เดพเดคเตเดคเดฟเดฐเดฟเด•เตเด•เตเดจเตเดจ เดคเตเดฐเต†เดกเตเด•เตพ เดคเดฟเดฐเด•เตเด•เตเดณเตเดณ เดธเดพเดนเดšเดฐเตเดฏเด™เตเด™เตพ เด’เดดเดฟเดตเดพเด•เตเด•เดฃเด‚. เด‡เดคเดฟเดจเดพเดฏเดฟ TaskCompletionSource เด•เตเดฒเดพเดธเต เด‰เดชเดฏเต‹เด—เดฟเด•เตเด•เตเดจเตเดจเดคเต เดธเต—เด•เดฐเตเดฏเดชเตเดฐเดฆเดฎเดพเดฃเต
  • เดธเดฎเดพเดจเตเดคเดฐเดคเดฏเดฟเดฒเตเด‚ เด…เดธเดฎเดจเตเดตเดฟเดคเดคเตเดคเดฟเดฒเตเด‚ เดชเตเดฐเดตเตผเดคเตเดคเดฟเด•เตเด•เตเดจเตเดจเดคเดฟเดจเตเดณเตเดณ เดเดฑเตเดฑเดตเตเด‚ เดถเด•เตเดคเดตเตเด‚ เดจเต‚เดคเดจเดตเตเดฎเดพเดฏ .NET เดŸเต‚เดณเตเด•เตพ เดŸเดพเดธเตโ€Œเด•เตเด•เตเด•เดณเดพเดฃเต.
  • c# async/wait operators เดจเต‹เตบ-เดฌเตเดฒเต‹เด•เตเด•เดฟเด‚เด—เต เดตเต†เดฏเดฟเดฑเตเดฑเต เดŽเดจเตเดจ เด†เดถเดฏเด‚ เดจเดŸเดชเตเดชเดฟเดฒเดพเด•เตเด•เตเดจเตเดจเต
  • TaskScheduler-derived เด•เตเดฒเดพเดธเตเด•เตพ เด‰เดชเดฏเต‹เด—เดฟเดšเตเดšเต เดจเดฟเด™เตเด™เตพเด•เตเด•เต เดคเตเดฐเต†เดกเตเด•เดณเดฟเดฒเตเดŸเดจเต€เดณเด‚ เดŸเดพเดธเตเด•เตเด•เตเด•เดณเตเดŸเต† เดตเดฟเดคเดฐเดฃเด‚ เดจเดฟเดฏเดจเตเดคเตเดฐเดฟเด•เตเด•เดพเดจเดพเด•เตเด‚
  • เดนเต‹เดŸเตเดŸเต-เดชเดพเดคเตเดคเตเด•เดณเตเด‚ เดฎเต†เดฎเตเดฎเดฑเดฟ เดŸเตเดฐเดพเดซเดฟเด•เตเด•เตเด‚ เด’เดชเตเดฑเตเดฑเดฟเดฎเตˆเดธเต เดšเต†เดฏเตเดฏเตเดจเตเดจเดคเดฟเดจเต ValueTask เด˜เดŸเดจ เด‰เดชเดฏเต‹เด—เดชเตเดฐเดฆเดฎเดพเด•เตเด‚
  • เดตเดฟเดทเตเดตเตฝ เดธเตเดฑเตเดฑเตเดกเดฟเดฏเต‹เดฏเตเดŸเต† เดŸเดพเดธเตโ€Œเด•เตเด•เตเด•เดณเตเด‚ เดคเตเดฐเต†เดกเตเด•เดณเตเด‚ เดตเดฟเตปเดกเต‹เด•เตพ เดฎเตพเดŸเตเดŸเดฟ-เดคเตเดฐเต†เดกเดกเต เด…เดฒเตเดฒเต†เด™เตเด•เดฟเตฝ เด…เดธเดฟเตปเด•เตเดฐเดฃเดธเต เด•เต‹เดกเต เดกเต€เดฌเด—เตเด—เดฟเด‚เด—เต เดšเต†เดฏเตเดฏเตเดจเตเดจเดคเดฟเดจเต เด‰เดชเดฏเต‹เด—เดชเตเดฐเดฆเดฎเดพเดฏ เดงเดพเดฐเดพเดณเด‚ เดตเดฟเดตเดฐเด™เตเด™เตพ เดจเตฝเด•เตเดจเตเดจเต.
  • PLinq เด’เดฐเต เดฐเดธเด•เดฐเดฎเดพเดฏ เด‰เดชเด•เดฐเดฃเดฎเดพเดฃเต, เดŽเดจเตเดจเดพเตฝ เดจเดฟเด™เตเด™เดณเตเดŸเต† เดกเดพเดฑเตเดฑเดพ เด‰เดฑเดตเดฟเดŸเดคเตเดคเต†เด•เตเด•เตเดฑเดฟเดšเตเดšเต เดฎเดคเดฟเดฏเดพเดฏ เดตเดฟเดตเดฐเด™เตเด™เตพ เด‡เดฒเตเดฒเดพเดฏเดฟเดฐเดฟเด•เตเด•เดพเด‚, เดชเด•เตเดทเต‡ เดชเดพเตผเดŸเตเดŸเต€เดทเดจเดฟเด‚เด—เต เดธเด‚เดตเดฟเดงเดพเดจเด‚ เด‰เดชเดฏเต‹เด—เดฟเดšเตเดšเต เด‡เดคเต เดชเดฐเดฟเดนเดฐเดฟเด•เตเด•เดพเดตเตเดจเตเดจเดคเดพเดฃเต.
  • เดคเตเดŸเดฐเต‡เดฃเตเดŸเดคเต ...

เด…เดตเดฒเด‚เดฌเด‚: www.habr.com

เด’เดฐเต เด…เดญเดฟเดชเตเดฐเดพเดฏเด‚ เดšเต‡เตผเด•เตเด•เตเด•