.NET: เจฎเจฒเจŸเฉ€เจฅเฉเจฐเฉˆเจกเจฟเฉฐเจ— เจ…เจคเฉ‡ เจ…เจธเจฟเฉฐเจ•เฉเจฐเฉ‹เจจเฉ€ เจจเจพเจฒ เจ•เฉฐเจฎ เจ•เจฐเจจ เจฒเจˆ เจŸเฉ‚เจฒเฅค เจญเจพเจ— 1

เจฎเฉˆเจ‚ เจนเจฌเจฐ 'เจคเฉ‡ เจฎเฉ‚เจฒ เจฒเฉ‡เจ– เจชเฉเจฐเจ•เจพเจธเจผเจฟเจค เจ•เจฐ เจฐเจฟเจนเจพ เจนเจพเจ‚, เจœเจฟเจธเจฆเจพ เจ…เจจเฉเจตเจพเจฆ เจ•เจพเจฐเจชเฉ‹เจฐเฉ‡เจŸ เจตเจฟเฉฑเจš เจชเฉ‹เจธเจŸ เจ•เฉ€เจคเจพ เจ—เจฟเจ† เจนเฉˆ เจฌเจฒเจพเฉฑเจ— เจชเฉ‹เจธเจŸ.

เจ‡เฉฑเจฅเฉ‡ เจ…เจคเฉ‡ เจนเฉเจฃ เจจเจคเฉ€เจœเฉ‡ เจฆเฉ€ เจ‰เจกเฉ€เจ• เจ•เฉ€เจคเฉ‡ เจฌเจฟเจจเจพเจ‚, เจ…เจธเจฟเฉฐเจ•เจฐเฉ‹เจจเจธ เจคเฉŒเจฐ 'เจคเฉ‡ เจ•เฉเจ เจ•เจฐเจจ เจฆเฉ€ เจœเจผเจฐเฉ‚เจฐเจค, เจœเจพเจ‚ เจ‡เจธ เจจเฉ‚เฉฐ เจ•เจฐเจจ เจตเจพเจฒเฉ€เจ†เจ‚ เจ•เจˆ เจ‡เจ•เจพเจˆเจ†เจ‚ เจตเจฟเจšเจ•เจพเจฐ เจตเฉฑเจกเฉ‡ เจ•เฉฐเจฎ เจจเฉ‚เฉฐ เจตเฉฐเจกเจฃ เจฆเฉ€ เจœเจผเจฐเฉ‚เจฐเจค, เจ•เฉฐเจชเจฟเจŠเจŸเจฐเจพเจ‚ เจฆเฉ‡ เจ†เจ—เจฎเจจ เจคเฉ‹เจ‚ เจชเจนเจฟเจฒเจพเจ‚ เจฎเฉŒเจœเฉ‚เจฆ เจธเฉ€เฅค เจ‰เจจเฉเจนเจพเจ‚ เจฆเฉ‡ เจ†เจ—เจฎเจจ เจจเจพเจฒ เจ‡เจน เจฒเฉ‹เฉœ เจฌเจนเฉเจค เจนเฉ€ เจ เฉ‹เจธ เจนเฉ‹ เจ—เจˆเฅค เจนเฉเจฃ, 2019 เจตเจฟเฉฑเจš, เจฎเฉˆเจ‚ เจ‡เจธ เจฒเฉ‡เจ– เจจเฉ‚เฉฐ 8-เจ•เฉ‹เจฐ เจ‡เฉฐเจŸเฉ‡เจฒ เจ•เฉ‹เจฐ เจชเฉเจฐเฉ‹เจธเฉˆเจธเจฐ เจตเจพเจฒเฉ‡ เจฒเฉˆเจชเจŸเจพเจช 'เจคเฉ‡ เจŸเจพเจˆเจช เจ•เจฐ เจฐเจฟเจนเจพ เจนเจพเจ‚, เจœเจฟเจธ 'เจคเฉ‡ เจธเฉŒ เจคเฉ‹เจ‚ เจตเฉฑเจง เจชเฉเจฐเจ•เจฟเจฐเจฟเจ†เจตเจพเจ‚ เจธเจฎเจพเจจเจพเจ‚เจคเจฐ เจšเฉฑเจฒ เจฐเจนเฉ€เจ†เจ‚ เจนเจจ, เจ…เจคเฉ‡ เจนเฉ‹เจฐ เจตเฉ€ เจฅเฉเจฐเฉˆเฉฑเจกเจธเฅค เจจเฉ‡เฉœเฉ‡, เจ‡เฉฑเจ• เจฅเฉ‹เฉœเจพ เจœเจฟเจนเจพ เจ–เจฐเจพเจฌ เจซเฉ‹เจจ เจนเฉˆ, เจœเฉ‹ เจ•เฉเจ เจธเจพเจฒ เจชเจนเจฟเจฒเจพเจ‚ เจ–เจฐเฉ€เจฆเจฟเจ† เจ—เจฟเจ† เจธเฉ€, เจ‡เจธ เจตเจฟเฉฑเจš เจฌเฉ‹เจฐเจก 'เจคเฉ‡ 8-เจ•เฉ‹เจฐ เจชเฉเจฐเฉ‹เจธเฉˆเจธเจฐ เจนเฉˆเฅค เจฅเฉ€เจฎเฉˆเจŸเจฟเจ• เจธเจฐเฉ‹เจค เจฒเฉ‡เจ–เจพเจ‚ เจ…เจคเฉ‡ เจตเฉ€เจกเฉ€เจ“ เจจเจพเจฒ เจญเจฐเฉ‡ เจนเฉ‹เจ เจนเจจ เจœเจฟเฉฑเจฅเฉ‡ เจ‰เจนเจจเจพเจ‚ เจฆเฉ‡ เจฒเฉ‡เจ–เจ• เจ‡เจธ เจธเจพเจฒ เจฆเฉ‡ เจซเจฒเฉˆเจ—เจธเจผเจฟเจช เจธเจฎเจพเจฐเจŸเจซเจผเฉ‹เจจเจพเจ‚ เจฆเฉ€ เจชเฉเจฐเจธเจผเฉฐเจธเจพ เจ•เจฐเจฆเฉ‡ เจนเจจ เจœเฉ‹ 16-เจ•เฉ‹เจฐ เจชเฉเจฐเฉ‹เจธเฉˆเจธเจฐเจพเจ‚ เจฆเฉ€ เจตเจฟเจธเจผเฉ‡เจธเจผเจคเจพ เจฐเฉฑเจ–เจฆเฉ‡ เจนเจจเฅค MS Azure เจ‡เฉฑเจ• 20 เจ•เฉ‹เจฐ เจชเฉเจฐเฉ‹เจธเฉˆเจธเจฐ เจ…เจคเฉ‡ 128 TB RAM เจตเจพเจฒเฉ€ เจ‡เฉฑเจ• เจตเจฐเจšเฉเจ…เจฒ เจฎเจธเจผเฉ€เจจ $2/เจ˜เฉฐเจŸเฉ‡ เจคเฉ‹เจ‚ เจ˜เฉฑเจŸ เจตเจฟเฉฑเจš เจชเฉเจฐเจฆเจพเจจ เจ•เจฐเจฆเจพ เจนเฉˆเฅค เจฌเจฆเจ•เจฟเจธเจฎเจคเฉ€ เจจเจพเจฒ, เจฅเจฐเจฟเฉฑเจกเจพเจ‚ เจฆเฉ‡ เจชเจฐเจธเจชเจฐ เจชเฉเจฐเจญเจพเจต เจฆเจพ เจชเฉเจฐเจฌเฉฐเจงเจจ เจ•เจฐเจจ เจฆเฉ‡ เจฏเฉ‹เจ— เจนเฉ‹เจฃ เจคเฉ‹เจ‚ เจฌเจฟเจจเจพเจ‚ เจ‡เจธ เจธเจผเจ•เจคเฉ€ เจจเฉ‚เฉฐ เจตเฉฑเจง เจคเฉ‹เจ‚ เจตเฉฑเจง เจ•เฉฑเจขเจฃเจพ เจ…เจคเฉ‡ เจ‡เจธ เจธเจผเจ•เจคเฉ€ เจจเฉ‚เฉฐ เจตเจฐเจคเจฃเจพ เจ…เจธเฉฐเจญเจต เจนเฉˆเฅค

เจชเจฐเจฟเจญเจพเจธเจผเจพ

เจชเฉเจฐเจ•เจฟเจฐเจฟเจ† - OS เจ†เจฌเจœเฉˆเจ•เจŸ, เจ†เจˆเจธเฉ‹เจฒเฉ‡เจŸเจฟเจก เจเจกเจฐเฉˆเฉฑเจธ เจธเจชเฉ‡เจธ, เจฅเจฐเจฟเฉฑเจกเจธ เจฐเฉฑเจ–เจฆเจพ เจนเฉˆเฅค
เจฅเจฐเจฟเฉฑเจก - เจ‡เฉฑเจ• OS เจ†เจฌเจœเฉˆเจ•เจŸ, เจเจ—เจœเจผเฉ€เจ•เจฟเจŠเจธเจผเจจ เจฆเฉ€ เจธเจญ เจคเฉ‹เจ‚ เจ›เฉ‹เจŸเฉ€ เจ‡เจ•เจพเจˆ, เจ‡เฉฑเจ• เจชเฉเจฐเจ•เจฟเจฐเจฟเจ† เจฆเจพ เจนเจฟเฉฑเจธเจพ, เจฅเฉเจฐเฉˆเฉฑเจก เจ‡เฉฑเจ• เจชเฉเจฐเจ•เจฟเจฐเจฟเจ† เจฆเฉ‡ เจ…เฉฐเจฆเจฐ เจ†เจชเจธ เจตเจฟเฉฑเจš เจฎเฉˆเจฎเฉ‹เจฐเฉ€ เจ…เจคเฉ‡ เจนเฉ‹เจฐ เจธเจฐเฉ‹เจค เจธเจพเจ‚เจเฉ‡ เจ•เจฐเจฆเฉ‡ เจนเจจเฅค
เจฎเจจเฉŒเจ—เฉ‹เจœเจผเจพเจฆเจพเจšเจจเฉ‹เจธเจคเฉ€ - OS เจธเฉฐเจชเจคเฉ€, เจ•เจˆ เจชเฉเจฐเจ•เจฟเจฐเจฟเจ†เจตเจพเจ‚ เจจเฉ‚เฉฐ เจ‡เฉฑเจ•เฉ‹ เจธเจฎเฉ‡เจ‚ เจšเจฒเจพเจ‰เจฃ เจฆเฉ€ เจฏเฉ‹เจ—เจคเจพ
เจฎเจฒเจŸเฉ€-เจ•เฉ‹เจฐ - เจชเฉเจฐเฉ‹เจธเฉˆเจธเจฐ เจฆเฉ€ เจ‡เฉฑเจ• เจตเจฟเจธเจผเฉ‡เจธเจผเจคเจพ, เจกเฉ‡เจŸเจพ เจชเฉเจฐเฉ‹เจธเฉˆเจธเจฟเฉฐเจ— เจฒเจˆ เจ•เจˆ เจ•เฉ‹เจฐเจพเจ‚ เจฆเฉ€ เจตเจฐเจคเฉ‹เจ‚ เจ•เจฐเจจ เจฆเฉ€ เจฏเฉ‹เจ—เจคเจพ
เจฎเจฒเจŸเฉ€เจชเฉเจฐเฉ‹เจธเฉˆเจธเจฟเฉฐเจ— - เจ‡เฉฑเจ• เจ•เฉฐเจชเจฟเจŠเจŸเจฐ เจฆเฉ€ เจ‡เฉฑเจ• เจตเจฟเจธเจผเฉ‡เจธเจผเจคเจพ, เจ•เจˆ เจชเฉเจฐเฉ‹เจธเฉˆเจธเจฐเจพเจ‚ เจจเจพเจฒ เจ‡เฉฑเจ•เฉ‹ เจธเจฎเฉ‡เจ‚ เจธเจฐเฉ€เจฐเจ• เจคเฉŒเจฐ 'เจคเฉ‡ เจ•เฉฐเจฎ เจ•เจฐเจจ เจฆเฉ€ เจฏเฉ‹เจ—เจคเจพ
เจฎเจฒเจŸเฉ€เจฅเฉเจฐเฉˆเจกเจฟเฉฐเจ— - เจ‡เฉฑเจ• เจชเฉเจฐเจ•เจฟเจฐเจฟเจ† เจฆเฉ€ เจ‡เฉฑเจ• เจตเจฟเจธเจผเฉ‡เจธเจผเจคเจพ, เจ•เจˆ เจฅเฉเจฐเฉˆเจกเจพเจ‚ เจตเจฟเฉฑเจš เจกเฉ‡เจŸเจพ เจชเฉเจฐเฉ‹เจธเฉˆเจธเจฟเฉฐเจ— เจจเฉ‚เฉฐ เจตเฉฐเจกเจฃ เจฆเฉ€ เจฏเฉ‹เจ—เจคเจพเฅค
เจธเจฎเจพเจจเจคเจพ - เจธเจฎเฉ‡เจ‚ เจฆเฉ€ เจชเฉเจฐเจคเฉ€ เจฏเฉ‚เจจเจฟเจŸ เจฆเฉ‡ เจจเจพเจฒ เจ•เจˆ เจ•เจฟเจฐเจฟเจ†เจตเจพเจ‚ เจธเจฐเฉ€เจฐเจ• เจคเฉŒเจฐ 'เจคเฉ‡ เจ•เจฐเจจเจพ
เจ…เจธเจฟเฉฐเจ•เฉเจฐเฉ‹เจจเฉ€ - เจ‡เจธ เจชเฉเจฐเฉ‹เจธเฉˆเจธเจฟเฉฐเจ— เจฆเฉ‡ เจชเฉ‚เจฐเจพ เจนเฉ‹เจฃ เจฆเฉ€ เจ‰เจกเฉ€เจ• เจ•เฉ€เจคเฉ‡ เจฌเจฟเจจเจพเจ‚ เจ•เจฟเจธเฉ‡ เจ“เจชเจฐเฉ‡เจธเจผเจจ เจจเฉ‚เฉฐ เจฒเจพเจ—เฉ‚ เจ•เจฐเจจเจพ; เจเจ—เจœเจผเฉ€เจ•เจฟเจŠเจธเจผเจจ เจฆเฉ‡ เจจเจคเฉ€เจœเฉ‡ 'เจคเฉ‡ เจฌเจพเจ…เจฆ เจตเจฟเฉฑเจš เจ•เจพเจฐเจตเจพเจˆ เจ•เฉ€เจคเฉ€ เจœเจพ เจธเจ•เจฆเฉ€ เจนเฉˆเฅค

เจฐเฉ‚เจชเจ•

เจธเจพเจฐเฉ€เจ†เจ‚ เจชเจฐเจฟเจญเจพเจธเจผเจพเจตเจพเจ‚ เจšเฉฐเจ—เฉ€เจ†เจ‚ เจจเจนเฉ€เจ‚ เจนเจจ เจ…เจคเฉ‡ เจ•เฉเจ เจจเฉ‚เฉฐ เจตเจพเจงเฉ‚ เจตเจฟเจ†เจ–เจฟเจ† เจฆเฉ€ เจฒเฉ‹เฉœ เจนเฉˆ, เจ‡เจธเจฒเจˆ เจฎเฉˆเจ‚ เจฐเจธเจฎเฉ€ เจคเฉŒเจฐ 'เจคเฉ‡ เจชเฉ‡เจธเจผ เจ•เฉ€เจคเฉ€ เจ—เจˆ เจธเจผเจฌเจฆเจพเจตเจฒเฉ€ เจตเจฟเฉฑเจš เจจเจพเจธเจผเจคเจพ เจชเจ•เจพเจ‰เจฃ เจฌเจพเจฐเฉ‡ เจ‡เฉฑเจ• เจฐเฉ‚เจชเจ• เจธเจผเจพเจฎเจฒ เจ•เจฐเจพเจ‚เจ—เจพเฅค เจ‡เจธ เจ…เจฒเฉฐเจ•เจพเจฐ เจตเจฟเฉฑเจš เจจเจพเจธเจผเจคเจพ เจชเจ•เจพเจ‰เจฃเจพ เจ‡เฉฑเจ• เจชเฉเจฐเจ•เจฟเจฐเจฟเจ† เจนเฉˆเฅค

เจธเจตเฉ‡เจฐเฉ‡ เจจเจพเจธเจผเจคเจพ เจคเจฟเจ†เจฐ เจ•เจฐเจฆเฉ‡ เจธเจฎเฉ‡เจ‚ เจฎเฉˆเจ‚ (CPU) เจฎเฉˆเจ‚ เจฐเจธเฉ‹เจˆ เจตเจฟเฉฑเจš เจ†เจ‰เจ‚เจฆเจพ เจนเจพเจ‚ (เจ•เฉฐเจชเจฟเจŠเจŸเจฐ). เจฎเฉ‡เจฐเฉ‡ เจ•เฉ‹เจฒ 2 เจนเฉฑเจฅ เจนเจจ (เจ•เฉ‹เจฐ). เจฐเจธเฉ‹เจˆ เจตเจฟเฉฑเจš เจฌเจนเฉเจค เจธเจพเจฐเฉ‡ เจ‰เจชเจ•เจฐเจฃ เจนเจจ (IO): เจ“เจตเจจ, เจ•เฉ‡เจคเจฒเฉ€, เจŸเฉ‹เจธเจŸเจฐ, เจซเจฐเจฟเฉฑเจœเฅค เจฎเฉˆเจ‚ เจ—เฉˆเจธ เจšเจพเจฒเฉ‚ เจ•เจฐเจฆเจพ เจนเจพเจ‚, เจ‡เจธ 'เจคเฉ‡ เจ‡เฉฑเจ• เจคเจฒเจผเจฃ เจตเจพเจฒเจพ เจชเฉˆเจจ เจฐเฉฑเจ–เจฆเจพ เจนเจพเจ‚ เจ…เจคเฉ‡ เจ‡เจธ เจฆเฉ‡ เจ—เจฐเจฎ เจนเฉ‹เจฃ เจฆเฉ€ เจ‰เจกเฉ€เจ• เจ•เฉ€เจคเฉ‡ เจฌเจฟเจจเจพเจ‚ เจ‡เจธ เจตเจฟเฉฑเจš เจคเฉ‡เจฒ เจชเจพ เจฆเจฟเฉฐเจฆเจพ เจนเจพเจ‚ (เจ…เจธเจฟเฉฐเจ•เฉเจฐเฉ‹เจจเจธเจฒเฉ€, เจ—เฉˆเจฐ-เจฌเจฒเจพเจ•เจฟเฉฐเจ—-IO-เจ‰เจกเฉ€เจ•), เจฎเฉˆเจ‚ เจซเจฐเจฟเฉฑเจœ เจตเจฟเฉฑเจšเฉ‹เจ‚ เจ…เฉฐเจกเฉ‡ เจ•เฉฑเจขเจฆเจพ เจนเจพเจ‚ เจ…เจคเฉ‡ เจ‰เจนเจจเจพเจ‚ เจจเฉ‚เฉฐ เจ‡เฉฑเจ• เจชเจฒเฉ‡เจŸ เจตเจฟเฉฑเจš เจคเฉ‹เฉœเจฆเจพ เจนเจพเจ‚, เจซเจฟเจฐ เจ‰เจนเจจเจพเจ‚ เจจเฉ‚เฉฐ เจ‡เฉฑเจ• เจนเฉฑเจฅ เจจเจพเจฒ เจ•เฉเฉฑเจŸเจฆเจพ เจนเจพเจ‚ (เจฅเฉเจฐเฉˆเฉฑเจก#1), เจ…เจคเฉ‡ เจฆเฉ‚เจœเจพ (เจฅเฉเจฐเฉˆเฉฑเจก#2) เจชเจฒเฉ‡เจŸ เจจเฉ‚เฉฐ เจซเฉœเจจเจพ (เจธเจพเจ‚เจเจพ เจธเจฐเฉ‹เจค)เฅค เจนเฉเจฃ เจฎเฉˆเจ‚ เจ•เฉ‡เจคเจฒเฉ€ เจจเฉ‚เฉฐ เจšเจพเจฒเฉ‚ เจ•เจฐเจจเจพ เจšเจพเจนเจพเจ‚เจ—เจพ, เจชเจฐ เจฎเฉ‡เจฐเฉ‡ เจ•เฉ‹เจฒ เจฒเฉ‹เฉœเฉ€เจ‚เจฆเฉ‡ เจนเฉฑเจฅ เจจเจนเฉ€เจ‚ เจนเจจ (เจฅเฉเจฐเฉˆเจก เจญเฉเฉฑเจ–เจฎเจฐเฉ€) เจ‡เจธ เจธเจฎเฉ‡เจ‚ เจฆเฉ‡ เจฆเฉŒเจฐเจพเจจ, เจคเจฒเจผเจฃ เจตเจพเจฒเจพ เจชเฉˆเจจ เจ—เจฐเจฎ เจนเฉ‹ เจœเจพเจ‚เจฆเจพ เจนเฉˆ (เจจเจคเฉ€เจœเฉ‡ เจจเฉ‚เฉฐ เจชเฉเจฐเฉ‹เจธเฉˆเจธ เจ•เจฐเจจเจพ) เจœเจฟเจธ เจตเจฟเฉฑเจš เจฎเฉˆเจ‚ เจœเฉ‹ เจฎเฉˆเจ‚ เจ•เฉ‹เจฐเฉœเฉ‡ เจฎเจพเจฐเจฟเจ† เจนเฉˆ เจกเฉ‹เจฒเฉเจนเจฆเจพ เจนเจพเจ‚เฅค เจฎเฉˆเจ‚ เจ•เฉ‡เจคเจฒเฉ€ เจคเฉฑเจ• เจชเจนเฉเฉฐเจšเจฆเจพ เจนเจพเจ‚ เจ…เจคเฉ‡ เจ‡เจธเจจเฉ‚เฉฐ เจšเจพเจฒเฉ‚ เจ•เจฐเจฆเจพ เจนเจพเจ‚ เจ…เจคเฉ‡ เจฎเฉ‚เจฐเจ–เจคเจพ เจจเจพเจฒ เจ‡เจธ เจตเจฟเฉฑเจš เจชเจพเจฃเฉ€ เจจเฉ‚เฉฐ เจ‰เจฌเจฒเจฆเจพ เจฆเฉ‡เจ–เจฆเจพ เจนเจพเจ‚ (เจฌเจฒเจพเจ•เจฟเฉฐเจ—-IO-เจ‰เจกเฉ€เจ• เจ•เจฐเฉ‹), เจนเจพเจฒเจพเจ‚เจ•เจฟ เจ‡เจธ เจธเจฎเฉ‡เจ‚ เจฆเฉŒเจฐเจพเจจ เจ‰เจน เจชเจฒเฉ‡เจŸ เจจเฉ‚เฉฐ เจงเฉ‹ เจธเจ•เจฆเจพ เจธเฉ€ เจœเจฟเฉฑเจฅเฉ‡ เจ‰เจธเจจเฉ‡ เจ†เจฎเจฒเฉ‡เจŸ เจจเฉ‚เฉฐ เจ•เฉ‹เจฐเฉœเฉ‡ เจฎเจพเจฐเจฟเจ† เจธเฉ€เฅค

เจฎเฉˆเจ‚ เจธเจฟเจฐเจซ 2 เจนเฉฑเจฅเจพเจ‚ เจฆเฉ€ เจตเจฐเจคเฉ‹เจ‚ เจ•เจฐเจ•เฉ‡ เจ‡เฉฑเจ• เจ†เจฎเจฒเฉ‡เจŸ เจชเจ•เจพเจ‡เจ†, เจ…เจคเฉ‡ เจฎเฉ‡เจฐเฉ‡ เจ•เฉ‹เจฒ เจนเฉ‹เจฐ เจจเจนเฉ€เจ‚ เจนเฉˆ, เจชเจฐ เจ‰เจธเฉ‡ เจธเจฎเฉ‡เจ‚, เจ†เจฎเจฒเฉ‡เจŸ เจจเฉ‚เฉฐ เจ•เฉ‹เจฐเฉœเฉ‡ เจฎเจพเจฐเจจ เจฆเฉ‡ เจธเจฎเฉ‡เจ‚, 3 เจ“เจชเจฐเฉ‡เจธเจผเจจ เจ‡เฉฑเจ•เฉ‹ เจธเจฎเฉ‡เจ‚ เจนเฉ‹เจ: เจ†เจฎเจฒเฉ‡เจŸ เจจเฉ‚เฉฐ เจ•เฉ‹เจฐเฉœเฉ‡ เจฎเจพเจฐเจจเจพ, เจชเจฒเฉ‡เจŸ เจจเฉ‚เฉฐ เจซเฉœเจจเจพ, เจคเจฒเจผเจฃ เจตเจพเจฒเฉ‡ เจชเฉˆเจจ เจจเฉ‚เฉฐ เจ—เจฐเจฎ เจ•เจฐเจจเจพ CPU เจ•เฉฐเจชเจฟเจŠเจŸเจฐ เจฆเจพ เจธเจญ เจคเฉ‹เจ‚ เจคเฉ‡เจœเจผ เจนเจฟเฉฑเจธเจพ เจนเฉˆ, IO เจ‰เจน เจนเฉเฉฐเจฆเจพ เจนเฉˆ เจœเฉ‹ เจ…เจ•เจธเจฐ เจธเจญ เจ•เฉเจ เจนเฉŒเจฒเฉ€ เจนเฉ‹ เจœเจพเจ‚เจฆเจพ เจนเฉˆ, เจ‡เจธเจฒเจˆ เจ…เจ•เจธเจฐ เจ‡เฉฑเจ• เจชเฉเจฐเจญเจพเจตเจธเจผเจพเจฒเฉ€ เจนเฉฑเจฒ เจ‡เจน เจนเฉˆ เจ•เจฟ IO เจคเฉ‹เจ‚ เจกเฉ‡เจŸเจพ เจชเฉเจฐเจพเจชเจค เจ•เจฐเจฆเฉ‡ เจธเจฎเฉ‡เจ‚ CPU เจจเฉ‚เฉฐ เจ•เจฟเจธเฉ‡ เจšเฉ€เจœเจผ เจจเจพเจฒ เจ•เจฌเจœเฉ‡ เจตเจฟเฉฑเจš เจฒเจฟเจ† เจœเจพเจตเฉ‡เฅค

เจ…เจฒเฉฐเจ•เจพเจฐ เจจเฉ‚เฉฐ เจœเจพเจฐเฉ€ เจฐเฉฑเจ–เจฃเจพ:

  • เจœเฉ‡เจ•เจฐ เจ†เจฎเจฒเฉ‡เจŸ เจคเจฟเจ†เจฐ เจ•เจฐเจจ เจฆเฉ€ เจชเฉเจฐเจ•เจฟเจฐเจฟเจ† เจตเจฟเฉฑเจš, เจฎเฉˆเจ‚ เจ•เฉฑเจชเฉœเฉ‡ เจฌเจฆเจฒเจฃ เจฆเฉ€ เจ•เฉ‹เจธเจผเจฟเจธเจผ เจ•เจฐเจพเจ‚เจ—เจพ, เจคเจพเจ‚ เจ‡เจน เจฎเจฒเจŸเฉ€เจŸเจพเจธเจ•เจฟเฉฐเจ— เจฆเฉ€ เจ‡เฉฑเจ• เจ‰เจฆเจพเจนเจฐเจฃ เจนเฉ‹เจตเฉ‡เจ—เฉ€เฅค เจ‡เฉฑเจ• เจฎเจนเฉฑเจคเจตเจชเฉ‚เจฐเจจ เจธเฉ‚เจšเจ•: เจ•เฉฐเจชเจฟเจŠเจŸเจฐ เจ‡เจธ เจตเจฟเฉฑเจš เจฒเฉ‹เจ•เจพเจ‚ เจจเจพเจฒเฉ‹เจ‚ เจฌเจนเฉเจค เจตเจงเฉ€เจ† เจนเจจ.
  • เจ•เจˆ เจธเจผเฉˆเฉฑเจซเจพเจ‚ เจตเจพเจฒเฉ€ เจ‡เฉฑเจ• เจฐเจธเฉ‹เจˆ, เจ‰เจฆเจพเจนเจฐเจจ เจฒเจˆ เจ‡เฉฑเจ• เจฐเฉˆเจธเจŸเฉ‹เจฐเฉˆเจ‚เจŸ เจตเจฟเฉฑเจš - เจ‡เฉฑเจ• เจฎเจฒเจŸเฉ€-เจ•เฉ‹เจฐ เจ•เฉฐเจชเจฟเจŠเจŸเจฐเฅค
  • เจ‡เฉฑเจ• เจธเจผเจพเจชเจฟเฉฐเจ— เจธเฉˆเจ‚เจŸเจฐ เจตเจฟเฉฑเจš เจซเฉ‚เจก เจ•เฉ‹เจฐเจŸ เจตเจฟเฉฑเจš เจฌเจนเฉเจค เจธเจพเจฐเฉ‡ เจฐเฉˆเจธเจŸเฉ‹เจฐเฉˆเจ‚เจŸ - เจกเฉ‡เจŸเจพ เจธเฉˆเจ‚เจŸเจฐ

.NET เจŸเฉ‚เจฒเจœเจผ

.NET เจฅเจฐเจฟเฉฑเจกเจพเจ‚ เจจเจพเจฒ เจ•เฉฐเจฎ เจ•เจฐเจจ เจตเจฟเฉฑเจš เจตเจงเฉ€เจ† เจนเฉˆ, เจœเจฟเจตเฉ‡เจ‚ เจ•เจฟ เจนเฉ‹เจฐ เจฌเจนเฉเจค เจธเจพเจฐเฉ€เจ†เจ‚ เจšเฉ€เจœเจผเจพเจ‚ เจจเจพเจฒเฅค เจนเจฐเฉ‡เจ• เจจเจตเฉ‡เจ‚ เจธเฉฐเจธเจ•เจฐเจฃ เจฆเฉ‡ เจจเจพเจฒ, เจ‡เจน เจ‰เจนเจจเจพเจ‚ เจจเจพเจฒ เจ•เฉฐเจฎ เจ•เจฐเจจ เจฒเจˆ เจตเฉฑเจง เจคเฉ‹เจ‚ เจตเฉฑเจง เจจเจตเฉ‡เจ‚ เจŸเฉ‚เจฒ เจชเฉ‡เจธเจผ เจ•เจฐเจฆเจพ เจนเฉˆ, OS เจฅเจฐเจฟเฉฑเจกเจพเจ‚ เจ‰เฉฑเจคเฉ‡ เจเจฌเจธเจŸเจฐเฉˆเจ•เจธเจผเจจ เจฆเฉ€เจ†เจ‚ เจจเจตเฉ€เจ†เจ‚ เจชเจฐเจคเจพเจ‚เฅค เจเจฌเจธเจŸเจฐเฉˆเจ•เจธเจผเจจ เจฆเฉ‡ เจจเจฟเจฐเจฎเจพเจฃ เจจเจพเจฒ เจ•เฉฐเจฎ เจ•เจฐเจฆเฉ‡ เจธเจฎเฉ‡เจ‚, เจซเจฐเฉ‡เจฎเจตเจฐเจ• เจกเจฟเจตเฉˆเจฒเจชเจฐ เจ‡เฉฑเจ• เจ…เจœเจฟเจนเฉ€ เจชเจนเฉเฉฐเจš เจฆเฉ€ เจตเจฐเจคเฉ‹เจ‚ เจ•เจฐเจฆเฉ‡ เจนเจจ เจœเฉ‹ เจฎเฉŒเจ•เจพ เจ›เฉฑเจกเจฆเจพ เจนเฉˆ, เจœเจฆเฉ‹เจ‚ เจ‰เฉฑเจš-เจชเฉฑเจงเจฐเฉ€ เจเจฌเจธเจŸเจฐเฉˆเจ•เจธเจผเจจ เจฆเฉ€ เจตเจฐเจคเฉ‹เจ‚ เจ•เจฐเจฆเฉ‡ เจนเฉ‹เจ, เจ‡เฉฑเจ• เจœเจพเจ‚ เจ‡เฉฑเจ• เจคเฉ‹เจ‚ เจตเฉฑเจง เจชเฉฑเจงเจฐเจพเจ‚ เจคเฉ‹เจ‚ เจนเฉ‡เจ เจพเจ‚ เจœเจพเจฃ เจฒเจˆเฅค เจฌเจนเฉเจคเฉ‡ เจ…เจ•เจธเจฐ เจ‡เจน เจœเจผเจฐเฉ‚เจฐเฉ€ เจจเจนเฉ€เจ‚ เจนเฉเฉฐเจฆเจพ, เจ…เจธเจฒ เจตเจฟเฉฑเจš เจ‡เจน เจ‡เฉฑเจ• เจธเจผเจพเจŸเจ—เจจ เจจเจพเจฒ เจ†เจชเจฃเฉ‡ เจ†เจช เจจเฉ‚เฉฐ เจชเฉˆเจฐเจพเจ‚ เจตเจฟเฉฑเจš เจ—เฉ‹เจฒเฉ€ เจฎเจพเจฐเจจ เจฆเจพ เจฆเจฐเจตเจพเจœเจผเจพ เจ–เฉ‹เจฒเฉเจนเจฆเจพ เจนเฉˆ, เจชเจฐ เจ•เจˆ เจตเจพเจฐ, เจฆเฉเจฐเจฒเฉฑเจญ เจฎเจพเจฎเจฒเจฟเจ†เจ‚ เจตเจฟเฉฑเจš, เจ‡เจน เจ‡เฉฑเจ• เจธเจฎเฉฑเจธเจฟเจ† เจจเฉ‚เฉฐ เจนเฉฑเจฒ เจ•เจฐเจจ เจฆเจพ เจ‡เฉฑเจ•เฉ‹ เจ‡เฉฑเจ• เจคเจฐเฉ€เจ•เจพ เจนเฉ‹ เจธเจ•เจฆเจพ เจนเฉˆ เจœเฉ‹ เจ…เจฎเฉ‚เจฐเจคเจคเจพ เจฆเฉ‡ เจฎเฉŒเจœเฉ‚เจฆเจพ เจชเฉฑเจงเจฐ 'เจคเฉ‡ เจนเฉฑเจฒ เจจเจนเฉ€เจ‚ เจนเฉเฉฐเจฆเจพ. .

เจŸเฉ‚เจฒเจธ เจฆเฉเจ†เจฐเจพ, เจฎเฉ‡เจฐเจพ เจฎเจคเจฒเจฌ เจซเจฐเฉ‡เจฎเจตเจฐเจ• เจ…เจคเฉ‡ เจฅเจฐเจก-เจชเจพเจฐเจŸเฉ€ เจชเฉˆเจ•เฉ‡เจœเจพเจ‚ เจฆเฉเจ†เจฐเจพ เจชเฉเจฐเจฆเจพเจจ เจ•เฉ€เจคเฉ‡ เจ—เจ เจเจชเจฒเฉ€เจ•เฉ‡เจธเจผเจจ เจชเฉเจฐเฉ‹เจ—เฉเจฐเจพเจฎเจฟเฉฐเจ— เจ‡เฉฐเจŸเจฐเจซเฉ‡เจธ (APIs) เจฆเฉ‡ เจจเจพเจฒ เจจเจพเจฒ เจชเฉ‚เจฐเฉ‡ เจธเจพเจซเจŸเจตเฉ‡เจ…เจฐ เจนเฉฑเจฒ เจนเจจ เจœเฉ‹ เจฎเจฒเจŸเฉ€-เจฅเฉเจฐเฉˆเจกเจก เจ•เฉ‹เจก เจจเจพเจฒ เจธเจฌเฉฐเจงเจค เจ•เจฟเจธเฉ‡ เจตเฉ€ เจธเจฎเฉฑเจธเจฟเจ† เจฒเจˆ เจ–เฉ‹เจœ เจจเฉ‚เฉฐ เจธเจฐเจฒ เจฌเจฃเจพเจ‰เจ‚เจฆเฉ‡ เจนเจจเฅค

เจ‡เฉฑเจ• เจฅเจฐเจฟเฉฑเจก เจธเจผเฉเจฐเฉ‚ เจ•เจฐ เจฐเจฟเจนเจพ เจนเฉˆ

เจฅเฉเจฐเฉˆเจก เจ•เจฒเจพเจธ เจฅเฉเจฐเฉˆเจกเจธ เจจเจพเจฒ เจ•เฉฐเจฎ เจ•เจฐเจจ เจฒเจˆ .NET เจตเจฟเฉฑเจš เจธเจญ เจคเฉ‹เจ‚ เจฌเฉเจจเจฟเจ†เจฆเฉ€ เจ•เจฒเจพเจธ เจนเฉˆเฅค เจ•เฉฐเจธเจŸเจฐเจ•เจŸเจฐ เจฆเฉ‹ เจกเฉˆเจฒเฉ€เจ—เฉ‡เจŸเจพเจ‚ เจตเจฟเฉฑเจšเฉ‹เจ‚ เจ‡เฉฑเจ• เจจเฉ‚เฉฐ เจธเจตเฉ€เจ•เจพเจฐ เจ•เจฐเจฆเจพ เจนเฉˆ:

  • เจฅเฉเจฐเฉˆเจกเจธเจŸเจพเจฐเจŸ - เจ•เฉ‹เจˆ เจชเฉˆเจฐเจพเจฎเฉ€เจŸเจฐ เจจเจนเฉ€เจ‚
  • ParametrizedThreadStart - เจ•เจฟเจธเจฎ เจฆเฉ‡ เจตเจธเจคเฉ‚ เจฆเฉ‡ เจ‡เฉฑเจ• เจชเฉˆเจฐเจพเจฎเฉ€เจŸเจฐ เจจเจพเจฒเฅค

เจธเจŸเจพเจฐเจŸ เจตเจฟเจงเฉ€ เจจเฉ‚เฉฐ เจ•เจพเจฒ เจ•เจฐเจจ เจคเฉ‹เจ‚ เจฌเจพเจ…เจฆ เจกเฉˆเจฒเฉ€เจ—เฉ‡เจŸ เจจเฉ‚เฉฐ เจจเจตเฉ‡เจ‚ เจฌเจฃเจพเจ เจฅเฉเจฐเฉˆเจก เจตเจฟเฉฑเจš เจšเจฒเจพเจ‡เจ† เจœเจพเจตเฉ‡เจ—เจพเฅค เจœเฉ‡เจ•เจฐ เจ•เจฟเจธเจฎ เจฆเจพ เจ‡เฉฑเจ• เจกเฉˆเจฒเฉ€เจ—เฉ‡เจŸ ParametrizedThreadStart เจ•เฉฐเจธเจŸเจฐเจ•เจŸเจฐ เจจเฉ‚เฉฐ เจชเจพเจธ เจ•เฉ€เจคเจพ เจ—เจฟเจ† เจธเฉ€, เจคเจพเจ‚ เจ‡เฉฑเจ• เจตเจธเจคเฉ‚ เจจเฉ‚เฉฐ เจธเจŸเจพเจฐเจŸ เจตเจฟเจงเฉ€ เจตเจฟเฉฑเจš เจชเจพเจธ เจ•เฉ€เจคเจพ เจœเจพเจฃเจพ เจšเจพเจนเฉ€เจฆเจพ เจนเฉˆเฅค เจ•เจฟเจธเฉ‡ เจตเฉ€ เจธเจฅเจพเจจเจ• เจœเจพเจฃเจ•เจพเจฐเฉ€ เจจเฉ‚เฉฐ เจธเจŸเฉเจฐเฉ€เจฎ เจตเจฟเฉฑเจš เจคเจฌเจฆเฉ€เจฒ เจ•เจฐเจจ เจฒเจˆ เจ‡เจธ เจตเจฟเจงเฉ€ เจฆเฉ€ เจฒเฉ‹เฉœ เจนเฉเฉฐเจฆเฉ€ เจนเฉˆเฅค เจ‡เจน เจงเจฟเจ†เจจ เจฆเฉ‡เจฃ เจฏเฉ‹เจ— เจนเฉˆ เจ•เจฟ เจฅเจฐเจฟเฉฑเจก เจฌเจฃเจพเจ‰เจฃเจพ เจ‡เฉฑเจ• เจฎเจนเจฟเฉฐเจ—เจพ เจ“เจชเจฐเฉ‡เจธเจผเจจ เจนเฉˆ, เจ…เจคเฉ‡ เจฅเจฐเจฟเฉฑเจก เจ†เจชเจฃเฉ‡ เจ†เจช เจตเจฟเฉฑเจš เจ‡เฉฑเจ• เจญเจพเจฐเฉ€ เจตเจธเจคเฉ‚ เจนเฉˆ, เจ˜เฉฑเจŸเฉ‹ เจ˜เฉฑเจŸ เจ•เจฟเจ‰เจ‚เจ•เจฟ เจ‡เจน เจธเจŸเฉˆเจ• 'เจคเฉ‡ 1MB เจฎเฉˆเจฎเฉ‹เจฐเฉ€ เจจเจฟเจฐเจงเจพเจฐเจค เจ•เจฐเจฆเจพ เจนเฉˆ เจ…เจคเฉ‡ OS API เจจเจพเจฒ เจ—เฉฑเจฒเจฌเจพเจค เจฆเฉ€ เจฒเฉ‹เฉœ เจนเฉเฉฐเจฆเฉ€ เจนเฉˆเฅค

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

เจฅเฉเจฐเฉˆเจกเจชเฉ‚เจฒ เจ•เจฒเจพเจธ เจชเฉ‚เจฒ เจฆเฉ€ เจงเจพเจฐเจจเจพ เจจเฉ‚เฉฐ เจฆเจฐเจธเจพเจ‰เจ‚เจฆเฉ€ เจนเฉˆเฅค .NET เจตเจฟเฉฑเจš, เจฅเฉเจฐเฉˆเจก เจชเฉ‚เจฒ เจ‡เฉฐเจœเจจเฉ€เจ…เจฐเจฟเฉฐเจ— เจฆเจพ เจ‡เฉฑเจ• เจนเจฟเฉฑเจธเจพ เจนเฉˆ, เจ…เจคเฉ‡ Microsoft เจฆเฉ‡ เจกเจฟเจตเฉˆเจฒเจชเจฐเจพเจ‚ เจจเฉ‡ เจ‡เจน เจฏเจ•เฉ€เจจเฉ€ เจฌเจฃเจพเจ‰เจฃ เจฒเจˆ เจฌเจนเฉเจค เจ•เฉ‹เจธเจผเจฟเจธเจผ เจ•เฉ€เจคเฉ€ เจนเฉˆ เจ•เจฟ เจ‡เจน เจตเจฟเจญเจฟเฉฐเจจ เจ•เจฟเจธเจฎเจพเจ‚ เจฆเฉ‡ เจฆเฉเจฐเจฟเจธเจผเจพเจ‚ เจตเจฟเฉฑเจš เจตเจงเฉ€เจ† เจขเฉฐเจ— เจจเจพเจฒ เจ•เฉฐเจฎ เจ•เจฐเจฆเจพ เจนเฉˆเฅค

เจ†เจฎ เจงเจพเจฐเจจเจพ:

เจเจชเจฒเฉ€เจ•เฉ‡เจธเจผเจจ เจฆเฉ‡ เจธเจผเฉเจฐเฉ‚ เจนเฉ‹เจฃ เจฆเฉ‡ เจธเจฎเฉ‡เจ‚ เจคเฉ‹เจ‚, เจ‡เจน เจฌเฉˆเจ•เจ—เฉเจฐเจพเจ‰เจ‚เจก เจตเจฟเฉฑเจš เจฐเจฟเจœเจผเจฐเจต เจตเจฟเฉฑเจš เจ•เจˆ เจฅเฉเจฐเฉˆเฉฑเจก เจฌเจฃเจพเจ‰เจ‚เจฆเจพ เจนเฉˆ เจ…เจคเฉ‡ เจ‰เจนเจจเจพเจ‚ เจจเฉ‚เฉฐ เจตเจฐเจคเฉ‹เจ‚ เจฒเจˆ เจฒเฉˆ เจœเจพเจฃ เจฆเฉ€ เจธเจฎเจฐเฉฑเจฅเจพ เจชเฉเจฐเจฆเจพเจจ เจ•เจฐเจฆเจพ เจนเฉˆเฅค เจœเฉ‡เจ•เจฐ เจฅเจฐเจฟเฉฑเจกเจพเจ‚ เจจเฉ‚เฉฐ เจ…เจ•เจธเจฐ เจ…เจคเฉ‡ เจตเฉฑเจกเฉ€ เจ—เจฟเจฃเจคเฉ€ เจตเจฟเฉฑเจš เจตเจฐเจคเจฟเจ† เจœเจพเจ‚เจฆเจพ เจนเฉˆ, เจคเจพเจ‚ เจชเฉ‚เจฒ เจ•เจพเจฒเจฐ เจฆเฉ€เจ†เจ‚ เจฒเฉ‹เฉœเจพเจ‚ เจจเฉ‚เฉฐ เจชเฉ‚เจฐเจพ เจ•เจฐเจจ เจฒเจˆ เจซเฉˆเจฒเจฆเจพ เจนเฉˆเฅค เจœเจฆเฉ‹เจ‚ เจธเจนเฉ€ เจธเจฎเฉ‡เจ‚ 'เจคเฉ‡ เจชเฉ‚เจฒ เจตเจฟเฉฑเจš เจ•เฉ‹เจˆ เจ–เจพเจฒเฉ€ เจฅเฉเจฐเฉˆเฉฑเจก เจจเจนเฉ€เจ‚ เจนเฉเฉฐเจฆเฉ‡, เจคเจพเจ‚ เจ‡เจน เจœเจพเจ‚ เจคเจพเจ‚ เจฅเจฐเจฟเฉฑเจกเจพเจ‚ เจตเจฟเฉฑเจšเฉ‹เจ‚ เจ‡เฉฑเจ• เจฆเฉ‡ เจตเจพเจชเจธ เจ†เจ‰เจฃ เจฆเฉ€ เจ‰เจกเฉ€เจ• เจ•เจฐเฉ‡เจ—เจพ, เจœเจพเจ‚ เจ‡เฉฑเจ• เจจเจตเจพเจ‚ เจฌเจฃเจพเจตเฉ‡เจ—เจพเฅค เจ‡เจน เจ‡เจธ เจคเจฐเฉเจนเจพเจ‚ เจนเฉˆ เจ•เจฟ เจฅเฉเจฐเฉˆเฉฑเจก เจชเฉ‚เจฒ เจ•เฉเจ เจฅเฉ‹เฉœเฉเจนเฉ‡ เจธเจฎเฉ‡เจ‚ เจฆเฉ€เจ†เจ‚ เจ•เจพเจฐเจตเจพเจˆเจ†เจ‚ เจฒเจˆ เจฌเจนเฉเจค เจตเจงเฉ€เจ† เจนเฉˆ เจ…เจคเฉ‡ เจ‰เจนเจจเจพเจ‚ เจ•เจพเจฐเจœเจพเจ‚ เจฒเจˆ เจฎเจพเฉœเจพ เจ…เจจเฉเจ•เฉ‚เจฒ เจนเฉˆ เจœเฉ‹ เจเจชเจฒเฉ€เจ•เฉ‡เจธเจผเจจ เจฆเฉ‡ เจชเฉ‚เจฐเฉ‡ เจ“เจชเจฐเฉ‡เจธเจผเจจ เจฆเฉŒเจฐเจพเจจ เจธเฉ‡เจตเจพเจตเจพเจ‚ เจตเจœเฉ‹เจ‚ เจšเฉฑเจฒเจฆเฉ‡ เจนเจจเฅค

เจชเฉ‚เจฒ เจคเฉ‹เจ‚ เจ‡เฉฑเจ• เจฅเจฐเจฟเฉฑเจก เจฆเฉ€ เจตเจฐเจคเฉ‹เจ‚ เจ•เจฐเจจ เจฒเจˆ, เจ‡เฉฑเจ• QueueUserWorkItem เจตเจฟเจงเฉ€ เจนเฉˆ เจœเฉ‹ WaitCallback เจ•เจฟเจธเจฎ เจฆเฉ‡ เจ‡เฉฑเจ• เจกเฉˆเจฒเฉ€เจ—เฉ‡เจŸ เจจเฉ‚เฉฐ เจธเจตเฉ€เจ•เจพเจฐ เจ•เจฐเจฆเฉ€ เจนเฉˆ, เจœเจฟเจธ เจตเจฟเฉฑเจš ParametrizedThreadStart เจฆเฉ‡ เจธเจฎเจพเจจ เจฆเจธเจคเจ–เจค เจนเฉเฉฐเจฆเฉ‡ เจนเจจ, เจ…เจคเฉ‡ เจ‡เจธ เจจเฉ‚เฉฐ เจชเจพเจธ เจ•เฉ€เจคเจพ เจ—เจฟเจ† เจชเฉˆเจฐเจพเจฎเฉ€เจŸเจฐ เจ‰เจนเฉ€ เจซเฉฐเจ•เจธเจผเจจ เจ•เจฐเจฆเจพ เจนเฉˆเฅค

ThreadPool.QueueUserWorkItem(...);

เจ˜เฉฑเจŸ-เจœเจพเจฃเจฟเจ† เจฅเจฐเจฟเฉฑเจก เจชเฉ‚เจฒ เจตเจฟเจงเฉ€ RegisterWaitForSingleObject เจจเฉ‚เฉฐ เจ—เฉˆเจฐ-เจฌเจฒเจพเจ•เจฟเฉฐเจ— IO เจ“เจชเจฐเฉ‡เจธเจผเจจเจพเจ‚ เจจเฉ‚เฉฐ เจธเฉฐเจ—เจ เจฟเจค เจ•เจฐเจจ เจฒเจˆ เจตเจฐเจคเจฟเจ† เจœเจพเจ‚เจฆเจพ เจนเฉˆเฅค เจ‡เจธ เจตเจฟเจงเฉ€ เจจเฉ‚เฉฐ เจชเจพเจธ เจ•เฉ€เจคเฉ‡ เจ—เจ เจกเฉˆเจฒเฉ€เจ—เฉ‡เจŸ เจจเฉ‚เฉฐ เจ‰เจฆเฉ‹เจ‚ เจฌเฉเจฒเจพเจ‡เจ† เจœเจพเจตเฉ‡เจ—เจพ เจœเจฆเฉ‹เจ‚ เจตเจฟเจงเฉ€ เจจเฉ‚เฉฐ เจชเจพเจธ เจ•เฉ€เจคเจพ เจตเฉ‡เจŸเจนเฉˆเจ‚เจกเจฒ "เจฐเจฟเจฒเฉ€เจœเจผ" เจนเฉ‹เจตเฉ‡เฅค

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 เจตเจฟเฉฑเจš เจชเฉ‡เจธเจผ เจ•เฉ€เจคเจพ เจ—เจฟเจ† เจธเฉ€เฅค เจนเฉเจฃ เจ‡เจน เจ…เจธเจฟเฉฐเจ•เฉเจฐเฉ‹เจจเฉ€ เจจเจพเจฒ เจ•เฉฐเจฎ เจ•เจฐเจจ เจฒเจˆ เจฎเจฟเจ†เจฐเฉ€ เจ…เจคเฉ‡ เจฎเฉเฉฑเจ– เจธเจพเจงเจจ เจนเฉˆเฅค เจ•เฉ‹เจˆ เจตเฉ€ เจ•เฉ‹เจก เจœเฉ‹ เจชเฉเจฐเจพเจฃเฉ€ เจชเจนเฉเฉฐเจš เจฆเฉ€ เจตเจฐเจคเฉ‹เจ‚ เจ•เจฐเจฆเจพ เจนเฉˆ เจ‰เจธเจจเฉ‚เฉฐ เจตเจฟเจฐเจพเจธเจค เจฎเฉฐเจจเจฟเจ† เจœเจพเจ‚เจฆเจพ เจนเฉˆเฅค TPL เจฆเฉ€ เจฎเฉ‚เจฒ เจ‡เจ•เจพเจˆ System.Threading.Tasks เจจเฉ‡เจฎเจธเจชเฉ‡เจธ เจคเฉ‹เจ‚ เจŸเจพเจธเจ• เจ•เจฒเจพเจธ เจนเฉˆเฅค เจ‡เฉฑเจ• เจ•เฉฐเจฎ เจ‡เฉฑเจ• เจงเจพเจ—เฉ‡ เจ‰เฉฑเจคเฉ‡ เจ‡เฉฑเจ• เจเจฌเจธเจŸเจฐเฉˆเจ•เจธเจผเจจ เจนเฉเฉฐเจฆเจพ เจนเฉˆเฅค C# เจญเจพเจธเจผเจพ เจฆเฉ‡ เจจเจตเฉ‡เจ‚ เจธเฉฐเจธเจ•เจฐเจฃ เจฆเฉ‡ เจจเจพเจฒ, เจธเจพเจจเฉ‚เฉฐ Tasks - async/await operators เจจเจพเจฒ เจ•เฉฐเจฎ เจ•เจฐเจจ เจฆเจพ เจ‡เฉฑเจ• เจธเจผเจพเจจเจฆเจพเจฐ เจคเจฐเฉ€เจ•เจพ เจฎเจฟเจฒเจฟเจ† เจนเฉˆเฅค เจ‡เจนเจจเจพเจ‚ เจธเฉฐเจ•เจฒเจชเจพเจ‚ เจจเฉ‡ เจ…เจธเจฟเฉฐเจ•เฉเจฐเฉ‹เจจเจธ เจ•เฉ‹เจก เจจเฉ‚เฉฐ เจฒเจฟเจ–เจฃเจพ เจธเฉฐเจญเจต เจฌเจฃเจพเจ‡เจ† เจœเจฟเจตเฉ‡เจ‚ เจ•เจฟ เจ‡เจน เจธเจงเจพเจฐเจจ เจ…เจคเฉ‡ เจธเจฎเจ•เจพเจฒเฉ€ เจธเฉ€, เจ‡เจธ เจจเจพเจฒ เจฅเจฐเจฟเฉฑเจกเจพเจ‚ เจฆเฉ‡ เจ…เฉฐเจฆเจฐเฉ‚เจจเฉ€ เจ•เฉฐเจฎเจ•เจพเจœ เจฆเฉ€ เจฅเฉ‹เฉœเฉ€ เจธเจฎเจ เจตเจพเจฒเฉ‡ เจฒเฉ‹เจ•เจพเจ‚ เจฒเจˆ เจ‰เจนเจจเจพเจ‚ เจเจชเจฒเฉ€เจ•เฉ‡เจธเจผเจจเจพเจ‚ เจจเฉ‚เฉฐ เจฒเจฟเจ–เจฃเจพ เจธเฉฐเจญเจต เจนเฉ‹ เจœเจพเจ‚เจฆเจพ เจนเฉˆ เจœเฉ‹ เจ‰เจนเจจเจพเจ‚ เจฆเฉ€ เจตเจฐเจคเฉ‹เจ‚ เจ•เจฐเจฆเฉ‡ เจนเจจ, เจเจชเจฒเฉ€เจ•เฉ‡เจธเจผเจจ เจœเฉ‹ เจฒเฉฐเจฌเฉ‡ เจ“เจชเจฐเฉ‡เจธเจผเจจ เจ•เจฐเจจ เจตเฉ‡เจฒเฉ‡ เจซเฉเจฐเฉ€เจœเจผ เจจเจนเฉ€เจ‚ เจนเฉเฉฐเจฆเฉ€เจ†เจ‚ เจนเจจเฅค async/await เจฆเฉ€ เจตเจฐเจคเฉ‹เจ‚ เจ•เจฐเจจเจพ เจ‡เฉฑเจ• เจœเจพเจ‚ เจ•เจˆ เจฒเฉ‡เจ–เจพเจ‚ เจฒเจˆ เจ‡เฉฑเจ• เจตเจฟเจธเจผเจพ เจนเฉˆ, เจชเจฐ เจฎเฉˆเจ‚ เจ•เฉเจ เจตเจพเจ•เจพเจ‚ เจตเจฟเฉฑเจš เจ‡เจธเจฆเจพ เจธเจพเจฐ เจฒเฉˆเจฃ เจฆเฉ€ เจ•เฉ‹เจธเจผเจฟเจธเจผ เจ•เจฐเจพเจ‚เจ—เจพ:

  • async เจŸเจพเจธเจ• เจœเจพเจ‚ เจตเจพเจ‡เจก เจตเจพเจชเจธ เจ•เจฐเจจ เจตเจพเจฒเฉ€ เจตเจฟเจงเฉ€ เจฆเจพ เจ‡เฉฑเจ• เจธเฉ‹เจงเจ• เจนเฉˆ
  • เจ…เจคเฉ‡ เจ‰เจกเฉ€เจ• เจ‡เฉฑเจ• เจจเจพเจจ-เจฌเจฒเจพเจ•เจฟเฉฐเจ— เจŸเจพเจธเจ• เจตเฉ‡เจŸเจฟเฉฐเจ— เจ†เจชเจฐเฉ‡เจŸเจฐ เจนเฉˆเฅค

เจ‡เฉฑเจ• เจตเจพเจฐ เจซเจฟเจฐ: เจ‰เจกเฉ€เจ• เจ“เจชเจฐเฉ‡เจŸเจฐ, เจ†เจฎ เจธเจฅเจฟเจคเฉ€ เจตเจฟเฉฑเจš (เจ‡เฉฑเจฅเฉ‡ เจ…เจชเจตเจพเจฆ เจนเจจ), เจฎเฉŒเจœเฉ‚เจฆเจพ เจเจ—เจœเจผเฉ€เจ•เจฟเจŠเจธเจผเจจ เจฆเฉ‡ เจฅเฉเจฐเฉˆเจก เจจเฉ‚เฉฐ เจ…เฉฑเจ—เฉ‡ เจœเจพเจฐเฉ€ เจ•เจฐเฉ‡เจ—เจพ, เจ…เจคเฉ‡ เจœเจฆเฉ‹เจ‚ เจŸเจพเจธเจ• เจ†เจชเจฃเจพ เจเจ—เจœเจผเฉ€เจ•เจฟเจŠเจธเจผเจจ เจชเฉ‚เจฐเจพ เจ•เจฐ เจฒเฉˆเจ‚เจฆเจพ เจนเฉˆ, เจ…เจคเฉ‡ เจฅเฉเจฐเฉˆเจก (เจ…เจธเจฒ เจตเจฟเฉฑเจš, เจธเฉฐเจฆเจฐเจญ เจ•เจนเจฟเจฃเจพ เจตเจงเฉ‡เจฐเฉ‡ เจธเจนเฉ€ เจนเฉ‹เจตเฉ‡เจ—เจพเฅค , เจชเจฐ เจฌเจพเจ…เจฆ เจตเจฟเฉฑเจš เจ‡เจธ เจฌเจพเจฐเฉ‡ เจนเฉ‹เจฐ) เจตเจฟเจงเฉ€ เจจเฉ‚เฉฐ เจ…เฉฑเจ—เฉ‡ เจšเจฒเจพเจ‰เจฃเจพ เจœเจพเจฐเฉ€ เจฐเฉฑเจ–เฉ‡เจ—เจพเฅค .NET เจฆเฉ‡ เจ…เฉฐเจฆเจฐ, เจ‡เจน เจตเจฟเจงเฉ€ เจ‰เจธเฉ‡ เจคเจฐเฉเจนเจพเจ‚ เจฒเจพเจ—เฉ‚ เจ•เฉ€เจคเฉ€ เจœเจพเจ‚เจฆเฉ€ เจนเฉˆ เจœเจฟเจตเฉ‡เจ‚ เจ•เจฟ เจ‰เจชเจœ เจตเจพเจชเจธเฉ€, เจœเจฆเฉ‹เจ‚ เจฒเจฟเจ–เจคเฉ€ เจตเจฟเจงเฉ€ เจ‡เฉฑเจ• เจชเฉ‚เจฐเฉ€ เจ•เจฒเจพเจธ เจตเจฟเฉฑเจš เจฌเจฆเจฒ เจœเจพเจ‚เจฆเฉ€ เจนเฉˆ, เจœเฉ‹ เจ•เจฟ เจ‡เฉฑเจ• เจฐเจพเจœ เจฎเจธเจผเฉ€เจจ เจนเฉˆ เจ…เจคเฉ‡ เจ‡เจนเจจเจพเจ‚ เจฐเจพเจœเจพเจ‚ เจฆเฉ‡ เจ…เจงเจพเจฐ เจคเฉ‡ เจตเฉฑเจ–เจฐเฉ‡ เจŸเฉเจ•เฉœเจฟเจ†เจ‚ เจตเจฟเฉฑเจš เจšเจฒเจพเจ‡เจ† เจœเจพ เจธเจ•เจฆเจพ เจนเฉˆเฅค เจ•เฉ‹เจˆ เจตเฉ€ เจฆเจฟเจฒเจšเจธเจชเฉ€ เจฐเฉฑเจ–เจฃ เจตเจพเจฒเจพ เจ•เฉ‹เจˆ เจตเฉ€ เจธเจงเจพเจฐเจจ เจ•เฉ‹เจก asynั/await เจฆเฉ€ เจตเจฐเจคเฉ‹เจ‚ เจ•เจฐเจ•เฉ‡ เจฒเจฟเจ– เจธเจ•เจฆเจพ เจนเฉˆ, เจ•เฉฐเจชเจพเจˆเจฒเจฐ เจœเจจเจฐเฉ‡เจŸเจก เจ•เฉ‹เจก เจธเจฎเจฐเฉฑเจฅ เจฆเฉ‡ เจจเจพเจฒ JetBrains dotPeek เจฆเฉ€ เจตเจฐเจคเฉ‹เจ‚ เจ•เจฐเจ•เฉ‡ เจ…เจธเฉˆเจ‚เจฌเจฒเฉ€ เจจเฉ‚เฉฐ เจ•เฉฐเจชเจพเจ‡เจฒ เจ…เจคเฉ‡ เจฆเฉ‡เจ– เจธเจ•เจฆเจพ เจนเฉˆเฅค

เจ†เจ‰ เจŸเจพเจธเจ• เจจเฉ‚เฉฐ เจฒเจพเจ‚เจš เจ•เจฐเจจ เจ…เจคเฉ‡ เจตเจฐเจคเจฃ เจฒเจˆ เจตเจฟเจ•เจฒเจชเจพเจ‚ เจจเฉ‚เฉฐ เจตเฉ‡เจ–เฉ€เจเฅค เจนเฉ‡เจ เจพเจ‚ เจฆเจฟเฉฑเจคเฉ€ เจ•เฉ‹เจก เจ‰เจฆเจพเจนเจฐเจจ เจตเจฟเฉฑเจš, เจ…เจธเฉ€เจ‚ เจ‡เฉฑเจ• เจจเจตเจพเจ‚ เจ•เฉฐเจฎ เจฌเจฃเจพเจ‰เจ‚เจฆเฉ‡ เจนเจพเจ‚ เจœเฉ‹ เจ•เฉเจ เจตเฉ€ เจฒเจพเจญเจฆเจพเจ‡เจ• เจจเจนเฉ€เจ‚ เจนเฉเฉฐเจฆเจพ (เจฅเฉเจฐเฉˆเจก.เจธเจฒเฉ€เจช(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 - เจ•เจพเจฐเจœเจพเจ‚ เจจเฉ‚เฉฐ เจฒเฉœเฉ€ เจตเจฟเฉฑเจš เจตเจฟเจตเจธเจฅเจฟเจค เจ•เฉ€เจคเจพ เจœเจพ เจธเจ•เจฆเจพ เจนเฉˆเฅค เจœเฉ‡เจ•เจฐ เจ‡เจน เจตเจฟเจ•เจฒเจช เจตเจฐเจคเจฟเจ† เจ—เจฟเจ† เจธเฉ€, เจคเจพเจ‚ เจŸเจพเจธเจ• เจ…เจœเจฟเจนเฉ€ เจธเจฅเจฟเจคเฉ€ เจตเจฟเฉฑเจš เจนเฉ‹ เจธเจ•เจฆเจพ เจนเฉˆ เจœเจฟเฉฑเจฅเฉ‡ เจ‡เจน เจ–เฉเจฆ เจชเฉ‚เจฐเจพ เจนเฉ‹ เจ—เจฟเจ† เจนเฉˆ เจ…เจคเฉ‡ เจ†เจชเจฃเฉ‡ เจฌเฉฑเจšเจฟเจ†เจ‚ เจจเฉ‚เฉฐ เจšเจฒเจพเจ‰เจฃ เจฆเฉ€ เจ‰เจกเฉ€เจ• เจ•เจฐ เจฐเจฟเจนเจพ เจนเฉˆเฅค
  • PreferFairness - เจฆเจพ เจฎเจคเจฒเจฌ เจนเฉˆ เจ•เจฟ เจฌเจพเจ…เจฆ เจตเจฟเฉฑเจš เจญเฉ‡เจœเฉ‡ เจ—เจ เจ•เฉฐเจฎเจพเจ‚ เจคเฉ‹เจ‚ เจชเจนเจฟเจฒเจพเจ‚ เจเจ—เจœเจผเฉ€เจ•เจฟเจŠเจธเจผเจจ เจฒเจˆ เจญเฉ‡เจœเฉ‡ เจ—เจ เจŸเจพเจธเจ• เจจเฉ‚เฉฐ เจเจ—เจœเจผเฉ€เจ•เจฟเจŠเจŸ เจ•เจฐเจจเจพ เจฌเจฟเจนเจคเจฐ เจนเฉ‹เจตเฉ‡เจ—เจพเฅค เจชเจฐ เจ‡เจน เจธเจฟเจฐเจซเจผ เจ‡เฉฑเจ• เจธเจฟเจซเจผเจพเจฐเจธเจผ เจนเฉˆ เจ…เจคเฉ‡ เจจเจคเฉ€เจœเจฟเจ†เจ‚ เจฆเฉ€ เจ—เจพเจฐเฉฐเจŸเฉ€ เจจเจนเฉ€เจ‚ เจนเฉˆเฅค

เจตเจฟเจงเฉ€ เจจเฉ‚เฉฐ เจชเจพเจธ เจ•เฉ€เจคเจพ เจ—เจฟเจ† เจฆเฉ‚เจœเจพ เจชเฉˆเจฐเจพเจฎเฉ€เจŸเจฐ CancellationToken เจนเฉˆเฅค เจ•เจฟเจธเฉ‡ เจ“เจชเจฐเฉ‡เจธเจผเจจ เจฆเฉ‡ เจธเจผเฉเจฐเฉ‚ เจนเฉ‹เจฃ เจคเฉ‹เจ‚ เจฌเจพเจ…เจฆ เจฐเฉฑเจฆ เจ•เจฐเจจ เจจเฉ‚เฉฐ เจธเจนเฉ€ เจขเฉฐเจ— เจจเจพเจฒ เจธเฉฐเจญเจพเจฒเจฃ เจฒเจˆ, เจฒเจพเจ—เฉ‚ เจ•เฉ€เจคเจพ เจœเจพ เจฐเจฟเจนเจพ เจ•เฉ‹เจก เจ•เฉˆเจ‚เจธเจฒเฉ‡เจธเจผเจจ เจŸเฉ‹เจ•เจจ เจธเจŸเฉ‡เจŸ เจฒเจˆ เจšเฉˆเฉฑเจ•เจพเจ‚ เจจเจพเจฒ เจญเจฐเจฟเจ† เจœเจพเจฃเจพ เจšเจพเจนเฉ€เจฆเจพ เจนเฉˆเฅค เจœเฉ‡เจ•เจฐ เจ•เฉ‹เจˆ เจœเจพเจ‚เจš เจจเจนเฉ€เจ‚ เจนเฉเฉฐเจฆเฉ€ เจนเฉˆ, เจคเจพเจ‚ CancelationTokenSource เจ†เจฌเจœเฉˆเจ•เจŸ 'เจคเฉ‡ เจ•เจพเจฒ เจ•เฉ€เจคเฉ€ เจ—เจˆ เจฐเฉฑเจฆ เจ•เจฐเจจ เจฆเฉ€ เจตเจฟเจงเฉ€ เจŸเจพเจธเจ• เจฆเฉ‡ เจธเจผเฉเจฐเฉ‚ เจนเฉ‹เจฃ เจคเฉ‹เจ‚ เจชเจนเจฟเจฒเจพเจ‚ เจนเฉ€ เจ‡เจธ เจฆเฉ‡ เจเจ—เจœเจผเฉ€เจ•เจฟเจŠเจธเจผเจจ เจจเฉ‚เฉฐ เจฐเฉ‹เจ•เจฃ เจฆเฉ‡ เจฏเฉ‹เจ— เจนเฉ‹เจตเฉ‡เจ—เฉ€เฅค

เจ†เจ–เจฐเฉ€ เจชเฉˆเจฐเจพเจฎเฉ€เจŸเจฐ TaskScheduler เจ•เจฟเจธเจฎ เจฆเจพ เจ‡เฉฑเจ• เจธเจผเจกเจฟเจŠเจฒเจฐ เจ†เจฌเจœเฉˆเจ•เจŸ เจนเฉˆเฅค เจ‡เจน เจ•เจฒเจพเจธ เจ…เจคเฉ‡ เจ‡เจธเจฆเฉ‡ เจ‰เฉฑเจคเจฐเจพเจงเจฟเจ•เจพเจฐเฉ€เจ†เจ‚ เจจเฉ‚เฉฐ เจธเจพเจฐเฉ‡ เจฅเฉเจฐเฉˆเฉฑเจกเจพเจ‚ เจตเจฟเฉฑเจš เจ•เจพเจฐเจœเจพเจ‚ เจจเฉ‚เฉฐ เจตเฉฐเจกเจฃ เจฒเจˆ เจฐเจฃเจจเฉ€เจคเฉ€เจ†เจ‚ เจจเฉ‚เฉฐ เจจเจฟเจฏเฉฐเจคเจฐเจฟเจค เจ•เจฐเจจ เจฒเจˆ เจคเจฟเจ†เจฐ เจ•เฉ€เจคเจพ เจ—เจฟเจ† เจนเฉˆ; เจฎเฉ‚เจฒ เจฐเฉ‚เจช เจตเจฟเฉฑเจš, เจŸเจพเจธเจ• เจจเฉ‚เฉฐ เจชเฉ‚เจฒ เจคเฉ‹เจ‚ เจ‡เฉฑเจ• เจฌเฉ‡เจคเจฐเจคเฉ€เจฌ เจฅเจฐเจฟเฉฑเจก 'เจคเฉ‡ เจšเจฒเจพเจ‡เจ† เจœเจพเจตเฉ‡เจ—เจพเฅค

เจ‰เจกเฉ€เจ• เจ†เจชเจฐเฉ‡เจŸเจฐ เจฌเจฃเจพเจ เจ—เจ เจŸเจพเจธเจ• 'เจคเฉ‡ เจฒเจพเจ—เฉ‚ เจ•เฉ€เจคเจพ เจœเจพเจ‚เจฆเจพ เจนเฉˆ, เจœเจฟเจธเจฆเจพ เจฎเจคเจฒเจฌ เจนเฉˆ เจ•เจฟ เจ‡เจธเจฆเฉ‡ เจฌเจพเจ…เจฆ เจฒเจฟเจ–เจฟเจ† เจ•เฉ‹เจก, เจœเฉ‡เจ•เจฐ เจ•เฉ‹เจˆ เจนเฉˆ, เจคเจพเจ‚ เจ‰เจธเฉ‡ เจธเฉฐเจฆเจฐเจญ เจตเจฟเฉฑเจš เจฒเจพเจ—เฉ‚ เจ•เฉ€เจคเจพ เจœเจพเจตเฉ‡เจ—เจพ (เจ…เจ•เจธเจฐ เจ‡เจธเจฆเจพ เจ…เจฐเจฅ เจ‰เจธเฉ‡ เจฅเฉเจฐเฉˆเจก 'เจคเฉ‡ เจนเฉเฉฐเจฆเจพ เจนเฉˆ) เจœเจฟเจตเฉ‡เจ‚ เจ•เจฟ เจ‰เจกเฉ€เจ• เจคเฉ‹เจ‚ เจชเจนเจฟเจฒเจพเจ‚ เจ•เฉ‹เจกเฅค

เจตเจฟเจงเฉ€ เจจเฉ‚เฉฐ async void เจตเจœเฉ‹เจ‚ เจšเจฟเฉฐเจจเฉเจนเจฟเจค เจ•เฉ€เจคเจพ เจ—เจฟเจ† เจนเฉˆ, เจœเจฟเจธเจฆเจพ เจฎเจคเจฒเจฌ เจนเฉˆ เจ•เจฟ เจ‡เจน เจ‰เจกเฉ€เจ• เจ†เจชเจฐเฉ‡เจŸเจฐ เจฆเฉ€ เจตเจฐเจคเฉ‹เจ‚ เจ•เจฐ เจธเจ•เจฆเจพ เจนเฉˆ, เจชเจฐ เจ•เจพเจฒเจฟเฉฐเจ— เจ•เฉ‹เจก เจเจ—เจœเจผเฉ€เจ•เจฟเจŠเจธเจผเจจ เจฆเฉ€ เจ‰เจกเฉ€เจ• เจ•เจฐเจจ เจฆเฉ‡ เจฏเฉ‹เจ— เจจเจนเฉ€เจ‚ เจนเฉ‹เจตเฉ‡เจ—เจพเฅค เจœเฉ‡ เจ…เจœเจฟเจนเฉ€ เจตเจฟเจธเจผเฉ‡เจธเจผเจคเจพ เจœเจผเจฐเฉ‚เจฐเฉ€ เจนเฉˆ, เจคเจพเจ‚ เจตเจฟเจงเฉ€ เจจเฉ‚เฉฐ เจŸเจพเจธเจ• เจตเจพเจชเจธ เจ•เจฐเจจเจพ เจšเจพเจนเฉ€เจฆเจพ เจนเฉˆ. async void เจฎเจพเจฐเจ• เจ•เฉ€เจคเฉ‡ เจขเฉฐเจ— เจ•เจพเจซเจผเฉ€ เจ†เจฎ เจนเจจ: เจ‡เฉฑเจ• เจจเจฟเจฏเจฎ เจฆเฉ‡ เจคเฉŒเจฐ 'เจคเฉ‡, เจ‡เจน เจ‡เจตเฉˆเจ‚เจŸ เจนเฉˆเจ‚เจกเจฒเจฐ เจœเจพเจ‚ เจนเฉ‹เจฐ เจคเจฐเฉ€เจ•เฉ‡ เจนเจจ เจœเฉ‹ เจ…เฉฑเจ— 'เจคเฉ‡ เจ•เฉฐเจฎ เจ•เจฐเจฆเฉ‡ เจนเจจ เจ…เจคเฉ‡ เจธเจฟเจงเจพเจ‚เจค เจจเฉ‚เฉฐ เจญเฉเฉฑเจฒ เจœเจพเจ‚เจฆเฉ‡ เจนเจจเฅค เจœเฉ‡ เจคเฉเจนเจพเจจเฉ‚เฉฐ เจจเจพ เจธเจฟเจฐเจซ เจเจ—เจœเจผเฉ€เจ•เจฟเจŠเจธเจผเจจ เจฆเฉ‡ เจ…เฉฐเจค เจคเฉฑเจ• เจ‡เฉฐเจคเจœเจผเจพเจฐ เจ•เจฐเจจ เจฆเจพ เจฎเฉŒเจ•เจพ เจฆเฉ‡เจฃเจพ เจšเจพเจนเฉ€เจฆเจพ เจนเฉˆ, เจชเจฐ เจจเจคเฉ€เจœเจพ เจตเฉ€ เจตเจพเจชเจธ เจ•เจฐเจจเจพ เจนเฉˆ, เจคเจพเจ‚ เจคเฉเจนเจพเจจเฉ‚เฉฐ เจŸเจพเจธเจ• เจฆเฉ€ เจตเจฐเจคเฉ‹เจ‚ เจ•เจฐเจจ เจฆเฉ€ เจœเจผเจฐเฉ‚เจฐเจค เจนเฉˆ.

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/await เจฆเฉ€ เจตเจฐเจคเฉ‹เจ‚ เจ•เจฐเจฆเฉ‡ เจนเจจ เจคเจพเจ‚ เจ‰เจนเจจเจพเจ‚ เจจเฉ‚เฉฐ เจธเฉฐเจญเจพเจฒเจฃเจพ เจฌเจนเฉเจค เจ†เจธเจพเจจ เจนเฉเฉฐเจฆเจพ เจนเฉˆ - เจ‰เจน เจ‰เจธเฉ‡ เจคเจฐเฉเจนเจพเจ‚ เจตเจฟเจตเจนเจพเจฐ เจ•เจฐเจฆเฉ‡ เจนเจจ เจœเจฟเจตเฉ‡เจ‚ เจ•เฉ‹เจก เจธเจฎเจ•เจพเจฒเฉ€ เจธเฉ€เฅค เจœเจฆเฉ‹เจ‚ เจ•เจฟ เจœเฉ‡เจ•เจฐ เจ…เจธเฉ€เจ‚ เจ‡เฉฑเจ• เจŸเจพเจธเจ• เจฒเจˆ เจธเจฎเจ•เจพเจฒเฉ€ เจตเฉ‡เจŸ เจเจ•เจธเฉ‹เจฐเจธเจฟเจœเจผเจฎ เจจเฉ‚เฉฐ เจฒเจพเจ—เฉ‚ เจ•เจฐเจฆเฉ‡ เจนเจพเจ‚, เจคเจพเจ‚ เจ…เจธเจฒ เจ…เจชเจตเจพเจฆ เจ‡เฉฑเจ• AggregateException เจตเจฟเฉฑเจš เจฌเจฆเจฒ เจœเจพเจ‚เจฆเจพ เจนเฉˆ, เจœเจฟเจตเฉ‡เจ‚ เจ•เจฟ เจ…เจชเจตเจพเจฆ เจจเฉ‚เฉฐ เจธเฉฐเจญเจพเจฒเจฃ เจฒเจˆ, เจคเฉเจนเจพเจจเฉ‚เฉฐ InnerException เจ•เจฟเจธเจฎ เจฆเฉ€ เจœเจพเจ‚เจš เจ•เจฐเจจเฉ€ เจชเจตเฉ‡เจ—เฉ€ เจ…เจคเฉ‡ C# เจธเฉฐเจธเจพเจฐ เจตเจฟเฉฑเจš เจตเจงเฉ‡เจฐเฉ‡ เจœเจพเจฃเฉ‡-เจชเจ›เจพเจฃเฉ‡ เจ•เฉˆเจš เจฌเจฒเจพเจ•เจพเจ‚ เจฆเฉ€ เจšเฉ‡เจจ เจฆเฉ€ เจฌเจœเจพเจ, เจ‡เฉฑเจ• เจ•เฉˆเจš เจฌเจฒเจพเจ• เจฆเฉ‡ เจ…เฉฐเจฆเจฐ เจ‡เฉฑเจ• if เจšเฉ‡เจจ เจ†เจชเจฃเฉ‡ เจ†เจช เจจเฉ‚เฉฐ เจฒเจฟเจ–เจฃเจพ เจชเจตเฉ‡เจ—เจพ เจœเจพเจ‚ เจจเจฟเจฐเจฎเจพเจฃ เจ•เจฐเจจ เจตเฉ‡เจฒเฉ‡ เจ•เฉˆเจš เจฆเฉ€ เจตเจฐเจคเฉ‹เจ‚ เจ•เจฐเจจเฉ€ เจชเจตเฉ‡เจ—เฉ€เฅค

เจคเฉ€เจœเฉ€ เจ…เจคเฉ‡ เจ…เฉฐเจคเจฟเจฎ เจ‰เจฆเจพเจนเจฐเจจเจพเจ‚ เจจเฉ‚เฉฐ เจตเฉ€ เจ‡เจธเฉ‡ เจ•เจพเจฐเจจ เจ•เจฐเจ•เฉ‡ เจฎเจพเฉœเจพ เจšเจฟเฉฐเจจเฉเจนเจฟเจค เจ•เฉ€เจคเจพ เจ—เจฟเจ† เจนเฉˆ เจ…เจคเฉ‡ เจธเจพเจฐเฉ€เจ†เจ‚ เจ‡เฉฑเจ•เฉ‹ เจœเจฟเจนเฉ€เจ†เจ‚ เจธเจฎเฉฑเจธเจฟเจ†เจตเจพเจ‚ เจนเจจเฅค

เจœเจฆเฉ‹เจ‚ เจ•เฉ‹เจˆ เจตเฉ€ เจ…เจคเฉ‡ เจ•เจฆเฉ‹เจ‚ เจธเจพเจฐเฉ‡ เจคเจฐเฉ€เจ•เฉ‡ เจ•เจพเจฐเจœเจพเจ‚ เจฆเฉ‡ เจ‡เฉฑเจ• เจธเจฎเฉ‚เจน เจฆเฉ€ เจ‰เจกเฉ€เจ• เจ•เจฐเจจ เจฒเจˆ เจฌเจนเฉเจค เจธเฉเจตเจฟเจงเจพเจœเจจเจ• เจนเจจ; เจ‰เจน เจ•เจพเจฐเจœเจพเจ‚ เจฆเฉ‡ เจ‡เฉฑเจ• เจธเจฎเฉ‚เจน เจจเฉ‚เฉฐ เจ‡เฉฑเจ• เจตเจฟเฉฑเจš เจฒเจชเฉ‡เจŸเจฆเฉ‡ เจนเจจ, เจœเฉ‹ เจœเจพเจ‚ เจคเจพเจ‚ เจ‰เจฆเฉ‹เจ‚ เจซเจพเจ‡เจฐ เจนเฉ‹ เจœเจพเจตเฉ‡เจ—เจพ เจœเจฆเฉ‹เจ‚ เจ—เจฐเฉเฉฑเจช เจตเจฟเฉฑเจšเฉ‹เจ‚ เจ•เฉ‹เจˆ เจŸเจพเจธเจ• เจชเจนเจฟเจฒเฉ€ เจตเจพเจฐ เจธเจผเฉเจฐเฉ‚ เจนเฉเฉฐเจฆเจพ เจนเฉˆ, เจœเจพเจ‚ เจœเจฆเฉ‹เจ‚ เจ‰เจนเจจเจพเจ‚ เจธเจพเจฐเจฟเจ†เจ‚ เจจเฉ‡ เจ†เจชเจฃเจพ เจ…เจฎเจฒ เจชเฉ‚เจฐเจพ เจ•เจฐ เจฒเจฟเจ† เจนเฉเฉฐเจฆเจพ เจนเฉˆเฅค

เจฅเจฐเจฟเฉฑเจกเจพเจ‚ เจจเฉ‚เฉฐ เจฐเฉ‹เจ•เจฃเจพ

เจ•เจˆ เจ•เจพเจฐเจจเจพเจ‚ เจ•เจฐเจ•เฉ‡, เจ‡เจธ เจฆเฉ‡ เจธเจผเฉเจฐเฉ‚ เจนเฉ‹เจฃ เจคเฉ‹เจ‚ เจฌเจพเจ…เจฆ เจตเจนเจพเจ… เจจเฉ‚เฉฐ เจฐเฉ‹เจ•เจฃเจพ เจœเจผเจฐเฉ‚เจฐเฉ€ เจนเฉ‹ เจธเจ•เจฆเจพ เจนเฉˆเฅค เจ…เจœเจฟเจนเจพ เจ•เจฐเจจ เจฆเฉ‡ เจ•เจˆ เจคเจฐเฉ€เจ•เฉ‡ เจนเจจเฅค เจฅเฉเจฐเฉˆเจก เจ•เจฒเจพเจธ เจตเจฟเฉฑเจš เจฆเฉ‹ เจขเฉเจ•เจตเฉ‡เจ‚ เจจเจพเจฎ เจตเจพเจฒเฉ‡ เจขเฉฐเจ— เจนเจจ: เจ…เจงเฉ‚เจฐเจพ เจ›เฉฑเจกเฉ‹ ะธ เจ‡เฉฐเจŸเจฐเฉฑเจชเจŸ. เจชเจนเจฟเจฒเฉ‡ เจจเฉ‚เฉฐ เจตเจฐเจคเจฃ เจฒเจˆ เจฌเจนเฉเจค เจœเจผเจฟเจ†เจฆเจพ เจธเจฟเจซเจพเจฐเจธเจผ เจจเจนเฉ€เจ‚ เจ•เฉ€เจคเฉ€ เจœเจพเจ‚เจฆเฉ€, เจ•เจฟเจ‰เจ‚เจ•เจฟ เจ•เจฟเจธเฉ‡ เจตเฉ€ เจฌเฉ‡เจคเจฐเจคเฉ€เจฌเฉ‡ เจชเจฒ 'เจคเฉ‡ เจ‡เจธ เจจเฉ‚เฉฐ เจ•เจพเจฒ เจ•เจฐเจจ เจคเฉ‹เจ‚ เจฌเจพเจ…เจฆ, เจ•เจฟเจธเฉ‡ เจนเจฆเจพเจ‡เจค เจฆเฉ€ เจชเฉเจฐเจ•เจฟเจฐเจฟเจ† เจฆเฉ‡ เจฆเฉŒเจฐเจพเจจ, เจ‡เฉฑเจ• เจ…เจชเจตเจพเจฆ เจฆเจฟเฉฑเจคเจพ เจœเจพเจตเฉ‡เจ—เจพ ThreadAbortedException. เจคเฉเจธเฉ€เจ‚ เจ•เจฟเจธเฉ‡ เจตเฉ€ เจชเฉ‚เจฐเจจ เจ…เฉฐเจ• เจตเฉ‡เจฐเฉ€เจเจฌเจฒ เจจเฉ‚เฉฐ เจตเจงเจพเจ‰เจฃ เจตเฉ‡เจฒเฉ‡ เจ…เจœเจฟเจนเฉ‡ เจ…เจชเจตเจพเจฆ เจฆเฉ€ เจ‰เจฎเฉ€เจฆ เจจเจนเฉ€เจ‚ เจ•เจฐเจฆเฉ‡ เจนเฉ‹, เจ เฉ€เจ• เจนเฉˆ? เจ…เจคเฉ‡ เจ‡เจธ เจตเจฟเจงเฉ€ เจฆเฉ€ เจตเจฐเจคเฉ‹เจ‚ เจ•เจฐเจฆเฉ‡ เจธเจฎเฉ‡เจ‚, เจ‡เจน เจ‡เฉฑเจ• เจฌเจนเฉเจค เจนเฉ€ เจ…เจธเจฒ เจธเจฅเจฟเจคเฉ€ เจนเฉˆ. เจœเฉ‡เจ•เจฐ เจคเฉเจนเจพเจจเฉ‚เฉฐ เจ•เฉ‹เจก เจฆเฉ‡ เจ‡เฉฑเจ• เจ–เจพเจธ เจญเจพเจ— เจตเจฟเฉฑเจš CLR เจจเฉ‚เฉฐ เจ…เจœเจฟเจนเจพ เจ…เจชเจตเจพเจฆ เจชเฉˆเจฆเจพ เจ•เจฐเจจ เจคเฉ‹เจ‚ เจฐเฉ‹เจ•เจฃ เจฆเฉ€ เจฒเฉ‹เฉœ เจนเฉˆ, เจคเจพเจ‚ เจคเฉเจธเฉ€เจ‚ เจ‡เจธเจจเฉ‚เฉฐ เจ•เจพเจฒเจพเจ‚ เจตเจฟเฉฑเจš เจฒเจชเฉ‡เจŸ เจธเจ•เจฆเฉ‡ เจนเฉ‹ เจฅเฉเจฐเฉˆเฉฑเจก.เจฌเฉ€เจ—เจฟเจจเจ•เฉเจฐเจฟเจŸเจฟเจ•เจฒ เจฐเฉ€เจœเจจ, Thread.EndCriticalRegion. เจ…เฉฐเจค เจตเจฟเฉฑเจš เจฌเจฒเจพเจ• เจตเจฟเฉฑเจš เจฒเจฟเจ–เจฟเจ† เจ•เฉ‹เจˆ เจตเฉ€ เจ•เฉ‹เจก เจ…เจœเจฟเจนเฉ€เจ†เจ‚ เจ•เจพเจฒเจพเจ‚ เจตเจฟเฉฑเจš เจฒเจชเฉ‡เจŸเจฟเจ† เจœเจพเจ‚เจฆเจพ เจนเฉˆเฅค เจ‡เจธ เจ•เจพเจฐเจจ เจ•เจฐเจ•เฉ‡, เจซเจฐเฉ‡เจฎเจตเจฐเจ• เจ•เฉ‹เจก เจฆเฉ€ เจกเฉ‚เฉฐเจ˜เจพเจˆ เจตเจฟเฉฑเจš เจคเฉเจธเฉ€เจ‚ เจ‡เฉฑเจ• เจ–เจพเจฒเฉ€ เจ•เฉ‹เจธเจผเจฟเจธเจผ เจจเจพเจฒ เจฌเจฒเจพเจ• เจฒเฉฑเจญ เจธเจ•เจฆเฉ‡ เจนเฉ‹, เจชเจฐ เจ…เฉฐเจค เจตเจฟเฉฑเจš เจ–เจพเจฒเฉ€ เจจเจนเฉ€เจ‚เฅค เจฎเจพเจˆเจ•เฉเจฐเฉ‹เจธเจพเจซเจŸ เจ‡เจธ เจตเจฟเจงเฉ€ เจจเฉ‚เฉฐ เจ‡เฉฐเจจเจพ เจจเจฟเจฐเจพเจธเจผ เจ•เจฐเจฆเจพ เจนเฉˆ เจ•เจฟ เจ‰เจนเจจเจพเจ‚ เจจเฉ‡ เจ‡เจธเจจเฉ‚เฉฐ .net เจ•เฉ‹เจฐ เจตเจฟเฉฑเจš เจธเจผเจพเจฎเจฒ เจจเจนเฉ€เจ‚ เจ•เฉ€เจคเจพเฅค

เจ‡เฉฐเจŸเจฐเฉฑเจชเจŸ เจตเจฟเจงเฉ€ เจตเจงเฉ‡เจฐเฉ‡ เจ…เจจเฉเจฎเจพเจจ เจจเจพเจฒ เจ•เฉฐเจฎ เจ•เจฐเจฆเฉ€ เจนเฉˆเฅค เจ‡เจน เจ‡เฉฑเจ• เจ…เจชเจตเจพเจฆ เจฆเฉ‡ เจจเจพเจฒ เจฅเจฐเจฟเฉฑเจก เจตเจฟเฉฑเจš เจตเจฟเจ˜เจจ เจชเจพ เจธเจ•เจฆเจพ เจนเฉˆ ThreadInterruptedException เจธเจฟเจฐเจซเจผ เจ‰เจนเจจเจพเจ‚ เจชเจฒเจพเจ‚ เจฆเฉŒเจฐเจพเจจ เจœเจฆเฉ‹เจ‚ เจงเจพเจ—เจพ เจ‰เจกเฉ€เจ• เจ…เจตเจธเจฅเจพ เจตเจฟเฉฑเจš เจนเฉเฉฐเจฆเจพ เจนเฉˆเฅค เจ‡เจน WaitHandle, เจฒเจพเจ•, เจœเจพเจ‚ Thread.Sleep เจจเฉ‚เฉฐ เจ•เจพเจฒ เจ•เจฐเจจ เจคเฉ‹เจ‚ เจฌเจพเจ…เจฆ เจฒเจŸเจ•เจฆเฉ‡ เจนเฉ‹เจ เจ‡เจธ เจ…เจตเจธเจฅเจพ เจตเจฟเฉฑเจš เจฆเจพเจ–เจฒ เจนเฉเฉฐเจฆเจพ เจนเฉˆเฅค

เจ‰เฉฑเจชเจฐ เจฆเฉฑเจธเฉ‡ เจ—เจ เจฆเฉ‹เจตเฉ‡เจ‚ เจตเจฟเจ•เจฒเจช เจ‰เจนเจจเจพเจ‚ เจฆเฉ€ เจ…เจชเฉเจฐเจฎเจพเจฃเจฟเจคเจคเจพ เจฆเฉ‡ เจ•เจพเจฐเจจ เจฎเจพเฉœเฉ‡ เจนเจจเฅค เจนเฉฑเจฒ เจ‡เฉฑเจ• เจขเจพเจ‚เจšเฉ‡ เจฆเฉ€ เจตเจฐเจคเฉ‹เจ‚ เจ•เจฐเจจเจพ เจนเฉˆ เจฐเฉฑเจฆ เจ•เจฐเจจ เจฆเจพ เจŸเฉ‹เจ•เจจ เจ…เจคเฉ‡ เจ•เจฒเจพเจธ เจฐเฉฑเจฆ เจ•เจฐเจจ เจฆเจพ เจŸเฉ‹เจ•เจจ เจธเจฐเฉ‹เจค. เจฌเจฟเฉฐเจฆเฉ‚ เจ‡เจน เจนเฉˆ: CancellationTokenSource เจ•เจฒเจพเจธ เจฆเฉ€ เจ‡เฉฑเจ• เจ‰เจฆเจพเจนเจฐเจฃ เจฌเจฃเจพเจˆ เจ—เจˆ เจนเฉˆ เจ…เจคเฉ‡ เจธเจฟเจฐเจซ เจ‰เจนเฉ€ เจœเฉ‹ เจ‡เจธเจฆเจพ เจฎเจพเจฒเจ• เจนเฉˆ เจตเจฟเจงเฉ€ เจจเฉ‚เฉฐ เจ•เจพเจฒ เจ•เจฐเจ•เฉ‡ เจ•เจพเจฐเจตเจพเจˆ เจจเฉ‚เฉฐ เจฐเฉ‹เจ• เจธเจ•เจฆเจพ เจนเฉˆ เจฐเฉฑเจฆ เจ•เจฐเฉ‹. เจธเจฟเจฐเจซเจผ เจ•เฉˆเจ‚เจธเจฒเฉ‡เจธเจผเจจ เจŸเฉ‹เจ•เจจ เจนเฉ€ เจ†เจชเจฐเฉ‡เจธเจผเจจ เจจเฉ‚เฉฐ เจชเจพเจธ เจ•เฉ€เจคเจพ เจœเจพเจ‚เจฆเจพ เจนเฉˆเฅค CancellationToken เจฆเฉ‡ เจฎเจพเจฒเจ• เจ†เจชเจฐเฉ‡เจธเจผเจจ เจจเฉ‚เฉฐ เจฐเฉฑเจฆ เจจเจนเฉ€เจ‚ เจ•เจฐ เจธเจ•เจฆเฉ‡, เจชเจฐ เจธเจฟเจฐเจซเจผ เจ‡เจน เจœเจพเจ‚เจš เจ•เจฐ เจธเจ•เจฆเฉ‡ เจนเจจ เจ•เจฟ เจ•เฉ€ เจ“เจชเจฐเฉ‡เจธเจผเจจ เจฐเฉฑเจฆ เจ•เจฐ เจฆเจฟเฉฑเจคเจพ เจ—เจฟเจ† เจนเฉˆเฅค เจ‡เจธเจฆเฉ‡ เจฒเจˆ เจ‡เฉฑเจ• เจฌเฉเจฒเฉ€เจ…เจจ เจœเจพเจ‡เจฆเจพเจฆ เจนเฉˆ เจฐเฉฑเจฆ เจ•เจฐเจจ เจฆเฉ€ เจฌเฉ‡เจจเจคเฉ€ เจ•เฉ€เจคเฉ€ เจ—เจˆ เจ…เจคเฉ‡ เจขเฉฐเจ— ThrowIfCancel เจฌเฉ‡เจจเจคเฉ€ เจ•เฉ€เจคเฉ€ เจ—เจˆ. เจฌเจพเจ…เจฆ เจตเจพเจฒเจพ เจ‡เฉฑเจ• เจ…เจชเจตเจพเจฆ เจธเฉเฉฑเจŸ เจฆเฉ‡เจตเฉ‡เจ—เจพ TaskCancelledException เจœเฉ‡เจ•เจฐ เจ•เฉˆเจ‚เจธเจฒเฉ‡เจธเจผเจจ เจŸเฉ‹เจ•เจจ เจ‰เจฆเจพเจนเจฐเจจ เจจเฉ‚เฉฐ เจคเฉ‹เจคเฉ‡ เจ•เฉ€เจคเฉ‡ เจœเจพเจฃ 'เจคเฉ‡ เจฐเฉฑเจฆ เจตเจฟเจงเฉ€ เจจเฉ‚เฉฐ เจฌเฉเจฒเจพเจ‡เจ† เจ—เจฟเจ† เจธเฉ€เฅค เจ…เจคเฉ‡ เจ‡เจน เจ‰เจน เจคเจฐเฉ€เจ•เจพ เจนเฉˆ เจœเฉ‹ เจฎเฉˆเจ‚ เจตเจฐเจคเจฃ เจฆเฉ€ เจธเจฟเจซเจพเจฐเจธเจผ เจ•เจฐเจฆเจพ เจนเจพเจ‚. เจ‡เจน เจชเจฟเจ›เจฒเฉ‡ เจตเจฟเจ•เจฒเจชเจพเจ‚ เจจเจพเจฒเฉ‹เจ‚ เจ‡เฉฑเจ• เจธเฉเจงเจพเจฐ เจนเฉˆ เจœเจฟเจธ 'เจคเฉ‡ เจชเฉ‚เจฐเจพ เจจเจฟเจฏเฉฐเจคเจฐเจฃ เจชเฉเจฐเจพเจชเจค เจ•เจฐเจ•เฉ‡ เจ‡เฉฑเจ• เจ…เจชเจตเจพเจฆ เจ•เจพเจฐเจตเจพเจˆ เจจเฉ‚เฉฐ เจ•เจฟเจธ เจฌเจฟเฉฐเจฆเฉ‚ 'เจคเฉ‡ เจฌเฉฐเจฆ เจ•เฉ€เจคเจพ เจœเจพ เจธเจ•เจฆเจพ เจนเฉˆเฅค

เจ‡เฉฑเจ• เจฅเจฐเจฟเฉฑเจก เจจเฉ‚เฉฐ เจฐเฉ‹เจ•เจฃ เจฒเจˆ เจธเจญ เจคเฉ‹เจ‚ เจฌเฉ‡เจฐเจนเจฟเจฎ เจตเจฟเจ•เจฒเจช เจนเฉˆ Win32 API TerminateThread เจซเฉฐเจ•เจธเจผเจจ เจจเฉ‚เฉฐ เจ•เจพเจฒ เจ•เจฐเจจเจพเฅค เจ‡เจธ เจซเฉฐเจ•เจธเจผเจจ เจจเฉ‚เฉฐ เจ•เจพเจฒ เจ•เจฐเจจ เจคเฉ‹เจ‚ เจฌเจพเจ…เจฆ CLR เจฆเจพ เจตเจฟเจตเจนเจพเจฐ เจ…เจฃ-เจ…เจจเฉเจฎเจพเจจเจฟเจค เจนเฉ‹ เจธเจ•เจฆเจพ เจนเฉˆเฅค MSDN 'เจคเฉ‡ เจ‡เจธ เจซเฉฐเจ•เจธเจผเจจ เจฌเจพเจฐเฉ‡ เจนเฉ‡เจ เจพเจ‚ เจฒเจฟเจ–เจฟเจ† เจ—เจฟเจ† เจนเฉˆ: "TerminateThread เจ‡เฉฑเจ• เจ–เจผเจคเจฐเจจเจพเจ• เจซเฉฐเจ•เจธเจผเจจ เจนเฉˆ เจœเฉ‹ เจธเจฟเจฐเจซ เจธเจญ เจคเฉ‹เจ‚ เจตเฉฑเจง เจ—เฉฐเจญเฉ€เจฐ เจฎเจพเจฎเจฒเจฟเจ†เจ‚ เจตเจฟเฉฑเจš เจตเจฐเจคเจฟเจ† เจœเจพเจฃเจพ เจšเจพเจนเฉ€เจฆเจพ เจนเฉˆเฅค "

FromAsync เจตเจฟเจงเฉ€ เจฆเฉ€ เจตเจฐเจคเฉ‹เจ‚ เจ•เจฐเจ•เฉ‡ เจชเฉเจฐเจพเจคเจจ API เจจเฉ‚เฉฐ เจŸเจพเจธเจ• เจฌเฉ‡เจธเจก เจตเจฟเฉฑเจš เจฌเจฆเจฒเจฃเจพ

เจœเฉ‡เจ•เจฐ เจคเฉเจธเฉ€เจ‚ เจ•เจฟเจธเฉ‡ เจ…เจœเจฟเจนเฉ‡ เจชเฉเจฐเฉ‹เจœเฉˆเจ•เจŸ 'เจคเฉ‡ เจ•เฉฐเจฎ เจ•เจฐเจจ เจฒเจˆ เจ•เจพเจซเจผเฉ€ เจ–เฉเจธเจผเจ•เจฟเจธเจฎเจค เจธเฉ€ เจœเฉ‹ เจŸเจพเจธเจ• เจชเฉ‡เจธเจผ เจ•เฉ€เจคเฉ‡ เจœเจพเจฃ เจคเฉ‹เจ‚ เจฌเจพเจ…เจฆ เจธเจผเฉเจฐเฉ‚ เจ•เฉ€เจคเจพ เจ—เจฟเจ† เจธเฉ€ เจ…เจคเฉ‡ เจœเจผเจฟเจ†เจฆเจพเจคเจฐ เจกเจฟเจตเฉˆเจฒเจชเจฐเจพเจ‚ เจฒเจˆ เจธเจผเจพเจ‚เจค เจกเจฐเจพเจ‰เจฃเจพ เจฌเฉฐเจฆ เจ•เจฐ เจฆเจฟเฉฑเจคเจพ เจ—เจฟเจ† เจธเฉ€, เจคเจพเจ‚ เจคเฉเจนเจพเจจเฉ‚เฉฐ เจฌเจนเฉเจค เจธเจพเจฐเฉ‡ เจชเฉเจฐเจพเจฃเฉ‡ APIs เจจเจพเจฒ เจจเจœเจฟเฉฑเจ เจฃ เจฆเฉ€ เจฒเฉ‹เฉœ เจจเจนเฉ€เจ‚ เจนเฉ‹เจตเฉ‡เจ—เฉ€, เจฆเฉ‹เจตเฉ‡เจ‚ เจคเฉ€เจœเฉ€-เจงเจฟเจฐ เจตเจพเจฒเฉ‡ เจ…เจคเฉ‡ เจคเฉเจนเจพเจกเฉ€ เจŸเฉ€เจฎเฅค เจจเฉ‡ เจ…เจคเฉ€เจค เจตเจฟเฉฑเจš เจคเจธเฉ€เจนเฉ‡ เจฆเจฟเฉฑเจคเฉ‡ เจนเจจเฅค เจ–เฉเจธเจผเจ•เจฟเจธเจฎเจคเฉ€ เจจเจพเจฒ, .NET เจซเจฐเฉ‡เจฎเจตเจฐเจ• เจŸเฉ€เจฎ เจจเฉ‡ เจธเจพเจกเฉ€ เจฆเฉ‡เจ–เจญเจพเจฒ เจ•เฉ€เจคเฉ€, เจนเจพเจฒเจพเจ‚เจ•เจฟ เจธเจผเจพเจ‡เจฆ เจŸเฉ€เจšเจพ เจ†เจชเจฃเฉ€ เจฆเฉ‡เจ–เจญเจพเจฒ เจ•เจฐเจจเจพ เจธเฉ€เฅค เจœเจฟเจตเฉ‡เจ‚ เจ•เจฟ เจ‡เจน เจนเฉ‹ เจธเจ•เจฆเจพ เจนเฉˆ, .NET เจ•เฉ‹เจฒ เจชเฉเจฐเจพเจฃเฉ‡ เจ…เจธเจฟเฉฐเจ•เฉเจฐเฉ‹เจจเจธ เจชเฉเจฐเฉ‹เจ—เจฐเจพเจฎเจฟเฉฐเจ— เจชเจนเฉเฉฐเจšเจพเจ‚ เจตเจฟเฉฑเจš เจฒเจฟเจ–เฉ‡ เจ•เฉ‹เจก เจจเฉ‚เฉฐ เจจเจตเฉ‡เจ‚ เจตเจฟเฉฑเจš เจฆเจฐเจฆ เจฐเจนเจฟเจค เจฐเฉ‚เจชเจพเจ‚เจคเจฐเจฃ เจฒเจˆ เจฌเจนเฉเจค เจธเจพเจฐเฉ‡ เจŸเฉ‚เจฒ เจนเจจเฅค เจ‰เจนเจจเจพเจ‚ เจตเจฟเฉฑเจšเฉ‹เจ‚ เจ‡เฉฑเจ• เจŸเจพเจธเจ•เจซเฉˆเจ•เจŸเจฐเฉ€ เจฆเฉ€ FromAsync เจตเจฟเจงเฉ€ เจนเฉˆเฅค เจนเฉ‡เจ เจพเจ‚ เจฆเจฟเฉฑเจคเฉ€ เจ•เฉ‹เจก เจ‰เจฆเจพเจนเจฐเจจ เจตเจฟเฉฑเจš, เจฎเฉˆเจ‚ เจ‡เจธ เจตเจฟเจงเฉ€ เจฆเฉ€ เจตเจฐเจคเฉ‹เจ‚ เจ•เจฐเจฆเฉ‡ เจนเฉ‹เจ เจ‡เฉฑเจ• เจŸเจพเจธเจ• เจตเจฟเฉฑเจš WebRequest เจ•เจฒเจพเจธ เจฆเฉ€เจ†เจ‚ เจชเฉเจฐเจพเจฃเฉ€เจ†เจ‚ เจ…เจธเจฟเฉฐเจ•เจฐเฉ‹เจจเจธ เจตเจฟเจงเฉ€เจ†เจ‚ เจจเฉ‚เฉฐ เจฒเจชเฉ‡เจŸเจฆเจพ เจนเจพเจ‚เฅค

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

เจ‡เจน เจธเจฟเจฐเจซเจผ เจ‡เฉฑเจ• เจ‰เจฆเจพเจนเจฐเจจ เจนเฉˆ เจ…เจคเฉ‡ เจคเฉเจนเจพเจจเฉ‚เฉฐ เจฌเจฟเจฒเจŸ-เจ‡เจจ เจ•เจฟเจธเจฎเจพเจ‚ เจจเจพเจฒ เจ…เจœเจฟเจนเจพ เจ•เจฐเจจ เจฆเฉ€ เจธเฉฐเจญเจพเจตเจจเจพ เจจเจนเฉ€เจ‚ เจนเฉˆ, เจชเจฐ เจ•เฉ‹เจˆ เจตเฉ€ เจชเฉเจฐเจพเจฃเจพ เจชเฉเจฐเฉ‹เจœเฉˆเจ•เจŸ เจธเจฟเจฐเจซเจผ BeginDoSomething เจขเฉฐเจ—เจพเจ‚ เจจเจพเจฒ เจฎเฉ‡เจฒ เจ–เจพเจ‚เจฆเจพ เจนเฉˆ เจœเฉ‹ เจ‡เจธเจจเฉ‚เฉฐ เจชเฉเจฐเจพเจชเจค เจ•เจฐเจจ เจตเจพเจฒเฉ‡ IAsyncResult เจ…เจคเฉ‡ EndDoSomething เจตเจฟเจงเฉ€เจ†เจ‚ เจจเฉ‚เฉฐ เจตเจพเจชเจธ เจ•เจฐเจฆเฉ‡ เจนเจจเฅค

TaskCompletionSource เจ•เจฒเจพเจธ เจฆเฉ€ เจตเจฐเจคเฉ‹เจ‚ เจ•เจฐเจ•เฉ‡ เจชเฉเจฐเจพเจคเจจ API เจจเฉ‚เฉฐ Task Based เจตเจฟเฉฑเจš เจฌเจฆเจฒเฉ‹

เจตเจฟเจšเจพเจฐ เจ•เจฐเจจ เจฒเจˆ เจ‡เจ• เจนเฉ‹เจฐ เจฎเจนเฉฑเจคเจตเจชเฉ‚เจฐเจจ เจธเจพเจงเจจ เจ•เจฒเจพเจธ เจนเฉˆ TaskCompletionSource. เจซเฉฐเจ•เจธเจผเจจเจพเจ‚, เจ‰เจฆเฉ‡เจธเจผ เจ…เจคเฉ‡ เจธเฉฐเจšเจพเจฒเจจ เจฆเฉ‡ เจธเจฟเจงเจพเจ‚เจค เจฆเฉ‡ เจธเฉฐเจฆเจฐเจญ เจตเจฟเฉฑเจš, เจ‡เจน เจฅเฉเจฐเฉˆเจกเจชเฉ‚เจฒ เจ•เจฒเจพเจธ เจฆเฉ‡ RegisterWaitForSingleObject เจตเจฟเจงเฉ€ เจฆเฉ€ เจ•เฉเจ เจฏเจพเจฆ เจฆเจฟเจตเจพเจ‰เจ‚เจฆเจพ เจนเฉˆ, เจœเจฟเจธ เจฌเจพเจฐเฉ‡ เจฎเฉˆเจ‚ เจ‰เฉฑเจชเจฐ เจฒเจฟเจ–เจฟเจ† เจธเฉ€เฅค เจ‡เจธ เจ•เจฒเจพเจธ เจฆเฉ€ เจตเจฐเจคเฉ‹เจ‚ เจ•เจฐเจ•เฉ‡, เจคเฉเจธเฉ€เจ‚ เจŸเจพเจธเจ• เจตเจฟเฉฑเจš เจชเฉเจฐเจพเจฃเฉ‡ เจ…เจธเจฟเฉฐเจ•เฉเจฐเฉ‹เจจเจธ API เจจเฉ‚เฉฐ เจ†เจธเจพเจจเฉ€ เจจเจพเจฒ เจ…เจคเฉ‡ เจธเฉเจตเจฟเจงเจพเจœเจจเจ• เจฐเฉ‚เจช เจตเจฟเฉฑเจš เจธเจฎเฉ‡เจŸ เจธเจ•เจฆเฉ‡ เจนเฉ‹เฅค

เจคเฉเจธเฉ€เจ‚ เจ•เจนเฉ‹เจ—เฉ‡ เจ•เจฟ เจฎเฉˆเจ‚ เจ‡เจนเจจเจพเจ‚ เจ‰เจฆเฉ‡เจธเจผเจพเจ‚ เจฒเจˆ เจคเจฟเจ†เจฐ เจ•เฉ€เจคเฉ‡ เจŸเจพเจธเจ•เจซเฉˆเจ•เจŸเจฐเฉ€ เจ•เจฒเจพเจธ เจฆเฉ‡ FromAsync เจตเจฟเจงเฉ€ เจฌเจพเจฐเฉ‡ เจชเจนเจฟเจฒเจพเจ‚ เจนเฉ€ เจ—เฉฑเจฒ เจ•เจฐ เจšเฉเฉฑเจ•เจพ เจนเจพเจ‚เฅค เจ‡เฉฑเจฅเฉ‡ เจธเจพเจจเฉ‚เฉฐ .net เจตเจฟเฉฑเจš เจ…เจธเจฟเฉฐเจ•เฉเจฐเฉ‹เจจเจธ เจฎเจพเจกเจฒเจพเจ‚ เจฆเฉ‡ เจตเจฟเจ•เจพเจธ เจฆเฉ‡ เจชเฉ‚เจฐเฉ‡ เจ‡เจคเจฟเจนเจพเจธ เจจเฉ‚เฉฐ เจฏเจพเจฆ เจฐเฉฑเจ–เจฃเจพ เจนเฉ‹เจตเฉ‡เจ—เจพ เจœเฉ‹ เจฎเจพเจˆเจ•เจฐเฉ‹เจธเจพเจซเจŸ เจจเฉ‡ เจชเจฟเจ›เจฒเฉ‡ 15 เจธเจพเจฒเจพเจ‚ เจตเจฟเฉฑเจš เจชเฉ‡เจธเจผ เจ•เฉ€เจคเจพ เจนเฉˆ: เจŸเจพเจธเจ•-เจฌเฉ‡เจธเจก เจ…เจธเจฟเฉฐเจ•เฉเจฐเฉ‹เจจเจธ เจชเฉˆเจŸเจฐเจจ (TAP) เจคเฉ‹เจ‚ เจชเจนเจฟเจฒเจพเจ‚, เจ…เจธเจฟเฉฐเจ•เฉเจฐเฉ‹เจจเจธ เจชเฉเจฐเฉ‹เจ—เจฐเจพเจฎเจฟเฉฐเจ— เจชเฉˆเจŸเจฐเจจ (APP), เจœเฉ‹ เจคเจฐเฉ€เจ•เจฟเจ†เจ‚ เจฌเจพเจฐเฉ‡ เจธเฉ€ เจธเจผเฉเจฐเฉ‚ เจ•เจฐเฉ‹เจ•เฉ€ เจ•เฉเจ เจตเจพเจชเจธ เจ† เจฐเจฟเจนเจพ เจนเฉˆ IAsyncResult เจ…เจคเฉ‡ เจขเฉฐเจ— เจ…เฉฐเจคDoSomething เจœเฉ‹ เจ‡เจธเจจเฉ‚เฉฐ เจธเจตเฉ€เจ•เจพเจฐ เจ•เจฐเจฆเจพ เจนเฉˆ เจ…เจคเฉ‡ เจ‡เจนเจจเจพเจ‚ เจธเจพเจฒเจพเจ‚ เจฆเฉ€ เจตเจฟเจฐเจพเจธเจค เจฒเจˆ FromAsync เจตเจฟเจงเฉ€ เจฌเจฟเจฒเจ•เฉเจฒ เจธเจนเฉ€ เจนเฉˆ, เจชเจฐ เจธเจฎเฉ‡เจ‚ เจฆเฉ‡ เจจเจพเจฒ, เจ‡เจธเจจเฉ‚เฉฐ เจ‡เจตเฉˆเจ‚เจŸ เจ…เจงเจพเจฐเจค เจ…เจธเจฟเฉฐเจ•เฉเจฐเฉ‹เจจเจธ เจชเฉˆเจŸเจฐเจจ (EAP), เจœเจฟเจธ เจจเฉ‡ เจ‡เจน เจฎเฉฐเจจเจฟเจ† เจ•เจฟ เจ…เจธเจฟเฉฐเจ•เฉเจฐเฉ‹เจจเจธ เจ“เจชเจฐเฉ‡เจธเจผเจจ เจชเฉ‚เจฐเจพ เจนเฉ‹เจฃ 'เจคเฉ‡ เจ‡เฉฑเจ• เจ‡เจตเฉˆเจ‚เจŸ เจ‰เจญเจพเจฐเจฟเจ† เจœเจพเจตเฉ‡เจ—เจพเฅค

TaskCompletionSource เจ‡เจตเฉˆเจ‚เจŸ เจฎเจพเจกเจฒ เจฆเฉ‡ เจ†เจฒเฉ‡-เจฆเฉเจ†เจฒเฉ‡ เจฌเจฃเฉ‡ Tasks เจ…เจคเฉ‡ เจชเฉเจฐเจพเจคเจจ API เจจเฉ‚เฉฐ เจธเจฎเฉ‡เจŸเจฃ เจฒเจˆ เจธเฉฐเจชเฉ‚เจฐเจจ เจนเฉˆเฅค เจ‡เจธเจฆเฉ‡ เจ•เฉฐเจฎ เจฆเจพ เจจเจฟเจšเฉ‹เฉœ เจ‡เจธ เจชเฉเจฐเจ•เจพเจฐ เจนเฉˆ: เจ‡เจธ เจ•เจฒเจพเจธ เจฆเฉ€ เจ‡เฉฑเจ• เจตเจธเจคเฉ‚ เจตเจฟเฉฑเจš เจŸเจพเจธเจ• เจ•เจฟเจธเจฎ เจฆเฉ€ เจ‡เฉฑเจ• เจœเจจเจคเจ• เจœเจพเจ‡เจฆเจพเจฆ เจนเฉˆ, เจœเจฟเจธ เจฆเฉ€ เจธเจฅเจฟเจคเฉ€ เจจเฉ‚เฉฐ 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 เจŸเจฟเจชเจธ เจ…เจคเฉ‡ เจŸเฉเจฐเจฟเจ•เจธ

เจชเฉเจฐเจพเจฃเฉ‡ API เจจเฉ‚เฉฐ เจธเจฎเฉ‡เจŸเจฃเจพ เจ‰เจน เจธเจญ เจ•เฉเจ เจจเจนเฉ€เจ‚ เจนเฉˆ เจœเฉ‹ TaskCompletionSource เจฆเฉ€ เจตเจฐเจคเฉ‹เจ‚ เจ•เจฐเจ•เฉ‡ เจ•เฉ€เจคเจพ เจœเจพ เจธเจ•เจฆเจพ เจนเฉˆเฅค เจ‡เจธ เจ•เจฒเจพเจธ เจฆเฉ€ เจตเจฐเจคเฉ‹เจ‚ เจ•เจฐเจจเจพ เจ‰เจนเจจเจพเจ‚ เจŸเจพเจธเจ•เจพเจ‚ 'เจคเฉ‡ เจตเฉฑเจ–-เจตเฉฑเจ– API เจจเฉ‚เฉฐ เจกเจฟเจœเจผเจพเจˆเจจ เจ•เจฐเจจ เจฆเฉ€ เจ‡เฉฑเจ• เจฆเจฟเจฒเจšเจธเจช เจธเฉฐเจญเจพเจตเจจเจพ เจจเฉ‚เฉฐ เจ–เฉ‹เจฒเฉเจนเจฆเจพ เจนเฉˆ เจœเฉ‹ เจฅเจฐเจฟเฉฑเจกเจพเจ‚ 'เจคเฉ‡ เจ•เจฌเจœเจผเจพ เจจเจนเฉ€เจ‚ เจ•เจฐเจฆเฉ‡ เจนเจจเฅค เจ…เจคเฉ‡ เจธเจŸเฉเจฐเฉ€เจฎ, เจœเจฟเจตเฉ‡เจ‚ เจ•เจฟ เจธเจพเจจเฉ‚เฉฐ เจฏเจพเจฆ เจนเฉˆ, เจ‡เฉฑเจ• เจฎเจนเจฟเฉฐเจ—เจพ เจธเจฐเฉ‹เจค เจนเฉˆ เจ…เจคเฉ‡ เจ‰เจนเจจเจพเจ‚ เจฆเฉ€ เจ—เจฟเจฃเจคเฉ€ เจธเฉ€เจฎเจค เจนเฉˆ (เจฎเฉเฉฑเจ– เจคเฉŒเจฐ 'เจคเฉ‡ RAM เจฆเฉ€ เจฎเจพเจคเจฐเจพ เจฆเฉเจ†เจฐเจพ). เจ‡เจน เจธเฉ€เจฎเจพ เจ†เจธเจพเจจเฉ€ เจจเจพเจฒ เจตเจฟเจ•เจธเจค เจ•เจฐเจ•เฉ‡ เจชเฉเจฐเจพเจชเจค เจ•เฉ€เจคเฉ€ เจœเจพ เจธเจ•เจฆเฉ€ เจนเฉˆ, เจ‰เจฆเจพเจนเจฐเจจ เจฒเจˆ, เจ—เฉเฉฐเจเจฒเจฆเจพเจฐ เจตเจชเจพเจฐเจ• เจคเจฐเจ• เจจเจพเจฒ เจ‡เฉฑเจ• เจฒเฉ‹เจก เจ•เฉ€เจคเฉ€ เจตเฉˆเฉฑเจฌ เจเจชเจฒเฉ€เจ•เฉ‡เจธเจผเจจเฅค เจ†เจ‰ เจ‰เจนเจจเจพเจ‚ เจธเฉฐเจญเจพเจตเจจเจพเจตเจพเจ‚ 'เจคเฉ‡ เจตเจฟเจšเจพเจฐ เจ•เจฐเฉ€เจ เจœเจฟเจจเฉเจนเจพเจ‚ เจฌเจพเจฐเฉ‡ เจฎเฉˆเจ‚ เจ—เฉฑเจฒ เจ•เจฐ เจฐเจฟเจนเจพ เจนเจพเจ‚ เจœเจฆเฉ‹เจ‚ เจฒเฉŒเจ‚เจ—-เจชเฉ‹เจฒเจฟเฉฐเจ— เจตเจฐเจ—เฉ€ เจšเจพเจฒ เจจเฉ‚เฉฐ เจฒเจพเจ—เฉ‚ เจ•เจฐเจจเจพ.

เจธเฉฐเจ–เฉ‡เจช เจตเจฟเฉฑเจš, เจšเจพเจฒ เจฆเจพ เจธเจพเจฐ เจ‡เจน เจนเฉˆ: เจคเฉเจนเจพเจจเฉ‚เฉฐ API เจคเฉ‹เจ‚ เจ‡เจธเจฆเฉ‡ เจชเจพเจธเฉ‡ เจนเฉ‹เจฃ เจตเจพเจฒเฉ€เจ†เจ‚ เจ•เฉเจ เจ˜เจŸเจจเจพเจตเจพเจ‚ เจฌเจพเจฐเฉ‡ เจœเจพเจฃเจ•เจพเจฐเฉ€ เจชเฉเจฐเจพเจชเจค เจ•เจฐเจจ เจฆเฉ€ เจœเจผเจฐเฉ‚เจฐเจค เจนเฉˆ, เจœเจฆเฉ‹เจ‚ เจ•เจฟ API, เจ•เจฟเจธเฉ‡ เจ•เจพเจฐเจจ เจ•เจฐเจ•เฉ‡, เจ˜เจŸเจจเจพ เจฆเฉ€ เจฐเจฟเจชเฉ‹เจฐเจŸ เจจเจนเฉ€เจ‚ เจ•เจฐ เจธเจ•เจฆเจพ, เจชเจฐ เจธเจฟเจฐเจซ เจธเจฅเจฟเจคเฉ€ เจจเฉ‚เฉฐ เจตเจพเจชเจธ เจ•เจฐ เจธเจ•เจฆเจพ เจนเฉˆเฅค เจ‡เจนเจจเจพเจ‚ เจฆเฉ€ เจ‡เฉฑเจ• เจ‰เจฆเจพเจนเจฐเจจ WebSocket เจฆเฉ‡ เจธเจฎเฉ‡เจ‚ เจคเฉ‹เจ‚ เจชเจนเจฟเจฒเจพเจ‚ HTTP เจฆเฉ‡ เจธเจฟเจ–เจฐ 'เจคเฉ‡ เจฌเจฃเฉ‡ เจธเจพเจฐเฉ‡ API เจนเจจ เจœเจพเจ‚ เจœเจฆเฉ‹เจ‚ เจ‡เจธ เจคเจ•เจจเจพเจฒเฉ‹เจœเฉ€ เจฆเฉ€ เจตเจฐเจคเฉ‹เจ‚ เจ•เจฐเจจเจพ เจ•เจฟเจธเฉ‡ เจ•เจพเจฐเจจ เจ•เจฐเจ•เฉ‡ เจ…เจธเฉฐเจญเจต เจธเฉ€เฅค เจ•เจฒเจพเจ‡เฉฐเจŸ HTTP เจธเจฐเจตเจฐ เจจเฉ‚เฉฐ เจชเฉเฉฑเจ› เจธเจ•เจฆเจพ เจนเฉˆเฅค HTTP เจธเจฐเจตเจฐ เจ†เจชเจฃเฉ‡ เจ†เจช เจ•เจฒเจพเจ‡เฉฐเจŸ เจจเจพเจฒ เจธเฉฐเจšเจพเจฐ เจธเจผเฉเจฐเฉ‚ เจจเจนเฉ€เจ‚ เจ•เจฐ เจธเจ•เจฆเจพ เจนเฉˆเฅค เจ‡เฉฑเจ• เจธเจงเจพเจฐเจจ เจนเฉฑเจฒ เจนเฉˆ เจ‡เฉฑเจ• เจŸเจพเจˆเจฎเจฐ เจฆเฉ€ เจตเจฐเจคเฉ‹เจ‚ เจ•เจฐเจ•เฉ‡ เจธเจฐเจตเจฐ เจจเฉ‚เฉฐ เจชเฉ‹เจฒ เจ•เจฐเจจเจพ, เจชเจฐ เจ‡เจน เจธเจฐเจตเจฐ 'เจคเฉ‡ เจ‡เฉฑเจ• เจตเจพเจงเฉ‚ เจฒเฉ‹เจก เจฌเจฃเจพเจ‰เจ‚เจฆเจพ เจนเฉˆ เจ…เจคเฉ‡ เจ”เจธเจค TimerInterval / 2 'เจคเฉ‡ เจ‡เฉฑเจ• เจตเจพเจงเฉ‚ เจฆเฉ‡เจฐเฉ€ เจชเฉˆเจฆเจพ เจ•เจฐเจฆเจพ เจนเฉˆเฅค เจ‡เจธ เจจเฉ‚เฉฐ เจชเฉเจฐเจพเจชเจค เจ•เจฐเจจ เจฒเจˆ, เจฒเฉŒเจ‚เจ— เจชเฉ‹เจฒเจฟเฉฐเจ— เจจเจพเจฎเจ• เจ‡เฉฑเจ• เจšเจพเจฒ เจฆเฉ€ เจ–เฉ‹เจœ เจ•เฉ€เจคเฉ€ เจ—เจˆ เจธเฉ€, เจœเจฟเจธ เจตเจฟเฉฑเจš เจœเจตเจพเจฌ เจตเจฟเฉฑเจš เจฆเฉ‡เจฐเฉ€ เจธเจผเจพเจฎเจฒ เจนเฉเฉฐเจฆเฉ€ เจนเฉˆเฅค เจธเจฐเจตเจฐ เจœเจฆเฉ‹เจ‚ เจคเฉฑเจ• เจธเจฎเจพเจ‚ เจธเจฎเจพเจชเจค เจจเจนเฉ€เจ‚ เจนเฉเฉฐเจฆเจพ เจœเจพเจ‚ เจ•เฉ‹เจˆ เจ˜เจŸเจจเจพ เจตเจพเจชเจฐเจฆเฉ€ เจนเฉˆเฅค เจœเฉ‡เจ•เจฐ เจ•เฉ‹เจˆ เจ˜เจŸเจจเจพ เจตเจพเจชเจฐเจฆเฉ€ เจนเฉˆ, เจคเจพเจ‚ เจ‡เจธ 'เจคเฉ‡ เจ•เจพเจฐเจตเจพเจˆ เจ•เฉ€เจคเฉ€ เจœเจพเจ‚เจฆเฉ€ เจนเฉˆ; เจœเฉ‡เจ•เจฐ เจจเจนเฉ€เจ‚, เจคเจพเจ‚ เจฌเฉ‡เจจเจคเฉ€ เจฆเฉเจฌเจพเจฐเจพ เจญเฉ‡เจœเฉ€ เจœเจพเจ‚เจฆเฉ€ เจนเฉˆเฅค

while(!eventOccures && !timeoutExceeded)  {

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

เจชเจฐ เจ˜เจŸเจจเจพ เจฆเฉ€ เจ‰เจกเฉ€เจ• เจ•เจฐเจจ เจตเจพเจฒเฉ‡ เจ—เจพเจนเจ•เจพเจ‚ เจฆเฉ€ เจ—เจฟเจฃเจคเฉ€ เจตเจงเจฃ เจฆเฉ‡ เจจเจพเจฒ เจนเฉ€ เจ…เจœเจฟเจนเจพ เจนเฉฑเจฒ เจญเจฟเจ†เจจเจ• เจธเจพเจฌเจค เจนเฉ‹เจตเฉ‡เจ—เจพ, เจ•เจฟเจ‰เจ‚เจ•เจฟ ... เจนเจฐเฉ‡เจ• เจ…เจœเจฟเจนเจพ เจ•เจฒเจพเจ‡เฉฐเจŸ เจ‡เฉฑเจ• เจ‡เจตเฉˆเจ‚เจŸ เจฆเฉ€ เจ‰เจกเฉ€เจ• เจตเจฟเฉฑเจš เจ‡เฉฑเจ• เจชเฉ‚เจฐเจพ เจฅเจฐเจฟเฉฑเจก เจฐเฉฑเจ–เจฆเจพ เจนเฉˆเฅค เจนเจพเจ‚, เจ…เจคเฉ‡ เจœเจฆเฉ‹เจ‚ เจ‡เจตเฉˆเจ‚เจŸ เจธเจผเฉเจฐเฉ‚ เจนเฉเฉฐเจฆเจพ เจนเฉˆ เจคเจพเจ‚ เจธเจพเจจเฉ‚เฉฐ เจ‡เฉฑเจ• เจตเจพเจงเฉ‚ 1ms เจฆเฉ‡เจฐเฉ€ เจฎเจฟเจฒเจฆเฉ€ เจนเฉˆ, เจ…เจ•เจธเจฐ เจ‡เจน เจฎเจนเฉฑเจคเจตเจชเฉ‚เจฐเจจ เจจเจนเฉ€เจ‚ เจนเฉเฉฐเจฆเจพ เจนเฉˆ, เจชเจฐ เจธเจพเจซเจŸเจตเฉ‡เจ…เจฐ เจจเฉ‚เฉฐ เจ‡เจธ เจคเฉ‹เจ‚ เจฌเจฆเจคเจฐ เจ•เจฟเจ‰เจ‚ เจฌเจฃเจพเจ‡เจ† เจœเจพ เจธเจ•เจฆเจพ เจนเฉˆ? เจœเฉ‡เจ•เจฐ เจ…เจธเฉ€เจ‚ 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 เจฌเจฃเจพเจ‰เจ‚เจฆเฉ‡ เจนเจพเจ‚ เจ…เจคเฉ‡ เจฐเฉฑเจ–เจฆเฉ‡ เจนเจพเจ‚, เจ…เจคเฉ‡ เจซเจฟเจฐ เจชเจนเจฟเจฒเจพเจ‚ เจ•เฉ€ เจนเฉเฉฐเจฆเจพ เจนเฉˆ เจฆเฉ€ เจ‰เจกเฉ€เจ• เจ•เจฐเจฆเฉ‡ เจนเจพเจ‚: เจจเจฟเจฐเจงเจพเจฐเจค เจธเจฎเฉ‡เจ‚ เจฆเฉ‡ เจ…เฉฐเจคเจฐเจพเจฒ เจฆเฉ€ เจฎเจฟเจ†เจฆ เจชเฉเฉฑเจ— เจœเจพเจ‚เจฆเฉ€ เจนเฉˆ เจœเจพเจ‚ เจธเฉเจจเฉ‡เจนเจพ เจชเฉเจฐเจพเจชเจค เจนเฉเฉฐเจฆเจพ เจนเฉˆเฅค

ValueTask: เจ•เจฟเจ‰เจ‚ เจ…เจคเฉ‡ เจ•เจฟเจตเฉ‡เจ‚

async/await เจ“เจชเจฐเฉ‡เจŸเจฐ, เจœเจฟเจตเฉ‡เจ‚ เจ•เจฟ เจฏเฉ€เจฒเจก เจฐเจฟเจŸเจฐเจจ เจ†เจชเจฐเฉ‡เจŸเจฐ, เจตเจฟเจงเฉ€ เจคเฉ‹เจ‚ เจ‡เฉฑเจ• เจธเจŸเฉ‡เจŸ เจฎเจธเจผเฉ€เจจ เจคเจฟเจ†เจฐ เจ•เจฐเจฆเฉ‡ เจนเจจ, เจ…เจคเฉ‡ เจ‡เจน เจ‡เฉฑเจ• เจจเจตเฉ€เจ‚ เจตเจธเจคเฉ‚ เจฆเฉ€ เจธเจฟเจฐเจœเจฃเจพ เจนเฉˆ, เจœเฉ‹ เจฒเจ—เจญเจ— เจนเจฎเฉ‡เจธเจผเจพ เจฎเจนเฉฑเจคเจตเจชเฉ‚เจฐเจจ เจจเจนเฉ€เจ‚ เจนเฉเฉฐเจฆเจพ เจนเฉˆ, เจชเจฐ เจฌเจนเฉเจค เจ˜เฉฑเจŸ เจฎเจพเจฎเจฒเจฟเจ†เจ‚ เจตเจฟเฉฑเจš เจ‡เจน เจ‡เฉฑเจ• เจธเจฎเฉฑเจธเจฟเจ† เจชเฉˆเจฆเจพ เจ•เจฐ เจธเจ•เจฆเจพ เจนเฉˆเฅค เจ‡เจน เจ•เฉ‡เจธ เจ‡เฉฑเจ• เจ…เจœเจฟเจนเจพ เจคเจฐเฉ€เจ•เจพ เจนเฉ‹ เจธเจ•เจฆเจพ เจนเฉˆ เจœเจฟเจธเจจเฉ‚เฉฐ เจ…เจธเจฒ เจตเจฟเฉฑเจš เจ…เจ•เจธเจฐ เจ•เจฟเจนเจพ เจœเจพเจ‚เจฆเจพ เจนเฉˆ, เจ…เจธเฉ€เจ‚ เจชเฉเจฐเจคเฉ€ เจธเจ•เจฟเฉฐเจŸ เจนเจœเจผเจพเจฐเจพเจ‚ เจ•เจพเจฒเจพเจ‚ เจ…เจคเฉ‡ เจนเจœเจผเจพเจฐเจพเจ‚ เจ•เจพเจฒเจพเจ‚ เจฌเจพเจฐเฉ‡ เจ—เฉฑเจฒ เจ•เจฐ เจฐเจนเฉ‡ เจนเจพเจ‚. เจœเฉ‡เจ•เจฐ เจ…เจœเจฟเจนเฉ€ เจตเจฟเจงเฉ€ เจจเฉ‚เฉฐ เจ‡เจธ เจคเจฐเฉ€เจ•เฉ‡ เจจเจพเจฒ เจฒเจฟเจ–เจฟเจ† เจ—เจฟเจ† เจนเฉˆ เจ•เจฟ เจœเจผเจฟเจ†เจฆเจพเจคเจฐ เจฎเจพเจฎเจฒเจฟเจ†เจ‚ เจตเจฟเฉฑเจš เจ‡เจน เจ‰เจกเฉ€เจ• เจฆเฉ‡ เจธเจพเจฐเฉ‡ เจคเจฐเฉ€เจ•เจฟเจ†เจ‚ เจจเฉ‚เฉฐ เจฌเจพเจˆเจชเจพเจธ เจ•เจฐเจ•เฉ‡ เจจเจคเฉ€เจœเจพ เจฆเจฟเฉฐเจฆเจพ เจนเฉˆ, เจคเจพเจ‚ .NET เจ‡เจธ เจจเฉ‚เฉฐ เจ…เจจเฉเจ•เฉ‚เจฒ เจฌเจฃเจพเจ‰เจฃ เจฒเจˆ เจ‡เฉฑเจ• เจธเจพเจงเจจ เจชเฉเจฐเจฆเจพเจจ เจ•เจฐเจฆเจพ เจนเฉˆ - ValueTask เจขเจพเจ‚เจšเจพเฅค เจ‡เจธ เจจเฉ‚เฉฐ เจธเจชเฉฑเจธเจผเจŸ เจ•เจฐเจจ เจฒเจˆ, เจ†เจ“ เจ‡เจธเจฆเฉ€ เจตเจฐเจคเฉ‹เจ‚ เจฆเฉ€ เจ‡เฉฑเจ• เจ‰เจฆเจพเจนเจฐเจฃ เจตเฉ‡เจ–เฉ€เจ: เจ‡เฉฑเจฅเฉ‡ เจ‡เฉฑเจ• เจ•เฉˆเจธเจผ เจนเฉˆ เจœเจฟเจธ เจจเฉ‚เฉฐ เจ…เจธเฉ€เจ‚ เจ…เจ•เจธเจฐ เจœเจพเจ‚เจฆเฉ‡ เจนเจพเจ‚เฅค เจ‡เจธ เจตเจฟเฉฑเจš เจ•เฉเจ เจฎเฉเฉฑเจฒ เจนเจจ เจ…เจคเฉ‡ เจซเจฟเจฐ เจ…เจธเฉ€เจ‚ เจ‰เจนเจจเจพเจ‚ เจจเฉ‚เฉฐ เจตเจพเจชเจธ เจ•เจฐเจฆเฉ‡ เจนเจพเจ‚; เจœเฉ‡ เจจเจนเฉ€เจ‚, เจคเจพเจ‚ เจ…เจธเฉ€เจ‚ เจ‰เจนเจจเจพเจ‚ เจจเฉ‚เฉฐ เจชเฉเจฐเจพเจชเจค เจ•เจฐเจจ เจฒเจˆ เจ•เฉเจ เจนเฉŒเจฒเฉ€ IO เจคเฉ‡ เจœเจพเจ‚เจฆเฉ‡ เจนเจพเจ‚. เจฎเฉˆเจ‚ เจฌเจพเจ…เจฆ เจตเจพเจฒเฉ‡ เจจเฉ‚เฉฐ เจ…เจธเจฟเฉฐเจ•เจฐเฉ‹เจจเจธ เจ•เจฐเจจเจพ เจšเจพเจนเฉเฉฐเจฆเจพ เจนเจพเจ‚, เจœเจฟเจธเจฆเจพ เจฎเจคเจฒเจฌ เจนเฉˆ เจ•เจฟ เจชเฉ‚เจฐเฉ€ เจตเจฟเจงเฉ€ เจ…เจธเจฟเฉฐเจ•เจฐเฉ‹เจจเจธ เจนเฉ‹ เจœเจพเจ‚เจฆเฉ€ เจนเฉˆเฅค เจ‡เจธ เจคเจฐเฉเจนเจพเจ‚, เจตเจฟเจงเฉ€ เจจเฉ‚เฉฐ เจฒเจฟเจ–เจฃ เจฆเจพ เจธเจชเจธเจผเจŸ เจคเจฐเฉ€เจ•เจพ เจ‡เจธ เจชเฉเจฐเจ•เจพเจฐ เจนเฉˆ:

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);
}

เจฆเจฐเจ…เจธเจฒ, เจ‡เจธ เจ•เฉ‡เจธ เจตเจฟเฉฑเจš เจธเจฐเจตเฉ‹เจคเจฎ เจนเฉฑเจฒ เจนเฉŒเจŸ-เจชเจพเจฅ เจจเฉ‚เฉฐ เจ…เจจเฉเจ•เฉ‚เจฒ เจฌเจฃเจพเจ‰เจฃเจพ เจนเฉ‹เจตเฉ‡เจ—เจพ, เจ…เจฐเจฅเจพเจค, เจฌเจฟเจจเจพเจ‚ เจ•เจฟเจธเฉ‡ เจฌเฉ‡เจฒเฉ‹เฉœเฉ€ เจตเฉฐเจก เจ…เจคเฉ‡ เจœเฉ€เจธเฉ€ เจ‰เฉฑเจคเฉ‡ เจฒเฉ‹เจก เจ•เฉ€เจคเฉ‡ เจกเจฟเจ•เจธเจผเจจเจฐเฉ€ เจคเฉ‹เจ‚ เจ‡เฉฑเจ• เจฎเฉเฉฑเจฒ เจชเฉเจฐเจพเจชเจค เจ•เจฐเจจเจพ, เจœเจฆเฉ‹เจ‚ เจ•เจฟ เจ‰เจนเจจเจพเจ‚ เจฆเฉเจฐเจฒเฉฑเจญ เจฎเจพเจฎเจฒเจฟเจ†เจ‚ เจตเจฟเฉฑเจš เจœเจฆเฉ‹เจ‚ เจธเจพเจจเฉ‚เฉฐ เจ…เจœเฉ‡ เจตเฉ€ เจกเฉ‡เจŸเจพ เจฒเจˆ IO เจคเฉ‡ เจœเจพเจฃ เจฆเฉ€ เจฒเฉ‹เฉœ เจนเฉเฉฐเจฆเฉ€ เจนเฉˆเฅค , เจธเจญ เจ•เฉเจ เจชเฉเจฐเจพเจฃเฉ‡ เจคเจฐเฉ€เจ•เฉ‡ เจจเจพเจฒ เจชเจฒเฉฑเจธ/เจฎเจพเจ‡เจจเจธ เจฐเจนเฉ‡เจ—เจพ:

public ValueTask<string> GetById(int id) {

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

เจ†เจ“ เจ•เฉ‹เจก เจฆเฉ‡ เจ‡เจธ เจŸเฉเจ•เฉœเฉ‡ 'เจคเฉ‡ เจกเฉ‚เฉฐเจ˜เจพเจˆ เจจเจพเจฒ เจตเจฟเจšเจพเจฐ เจ•เจฐเฉ€เจ: เจœเฉ‡เจ•เจฐ เจ•เฉˆเจธเจผ เจตเจฟเฉฑเจš เจ•เฉ‹เจˆ เจฎเฉเฉฑเจฒ เจนเฉˆ, เจคเจพเจ‚ เจ…เจธเฉ€เจ‚ เจ‡เฉฑเจ• เจขเจพเจ‚เจšเจพ เจฌเจฃเจพเจ‰เจ‚เจฆเฉ‡ เจนเจพเจ‚, เจจเจนเฉ€เจ‚ เจคเจพเจ‚ เจ…เจธเจฒ เจ•เฉฐเจฎ เจจเฉ‚เฉฐ เจ‡เฉฑเจ• เจ…เจฐเจฅเจชเฉ‚เจฐเจจ เจตเจฟเฉฑเจš เจฒเจชเฉ‡เจŸเจฟเจ† เจœเจพเจตเฉ‡เจ—เจพเฅค เจ•เจพเจฒเจฟเฉฐเจ— เจ•เฉ‹เจก เจ‡เจธ เจ—เฉฑเจฒ เจฆเฉ€ เจชเจฐเจตเจพเจน เจจเจนเฉ€เจ‚ เจ•เจฐเจฆเจพ เจนเฉˆ เจ•เจฟ เจ‡เจน เจ•เฉ‹เจก เจ•เจฟเจธ เจฎเจพเจฐเจ— เจตเจฟเฉฑเจš เจšเจฒเจพเจ‡เจ† เจ—เจฟเจ† เจธเฉ€: ValueTask, เจ‡เฉฑเจ• C# เจธเฉฐเจŸเฉˆเจ•เจธ เจฆเฉเจฐเจฟเจธเจผเจŸเฉ€เจ•เฉ‹เจฃ เจคเฉ‹เจ‚, เจ‡เจธ เจ•เฉ‡เจธ เจตเจฟเฉฑเจš เจ‡เฉฑเจ• เจจเจฟเจฏเจฎเจค เจŸเจพเจธเจ• เจตเจพเจ‚เจ— เจนเฉ€ เจตเจฟเจตเจนเจพเจฐ เจ•เจฐเฉ‡เจ—เจพเฅค

เจŸเจพเจธเจ• เจธเจผเฉˆเจกเจฟเจŠเจฒเจฐ: เจŸเจพเจธเจ• เจฒเจพเจ‚เจš เจฐเจฃเจจเฉ€เจคเฉ€เจ†เจ‚ เจฆเจพ เจชเฉเจฐเจฌเฉฐเจงเจจ เจ•เจฐเจจเจพ

เจ…เจ—เจฒเจพ API เจœเจฟเจธ เจฌเจพเจฐเฉ‡ เจฎเฉˆเจ‚ เจตเจฟเจšเจพเจฐ เจ•เจฐเจจเจพ เจšเจพเจนเจพเจ‚เจ—เจพ เจ‰เจน เจนเฉˆ เจ•เจฒเจพเจธ เจŸเจพเจธเจ•-เจธเจผเฉˆเจกเจฟเจŠเจฒเจฐ เจ…เจคเฉ‡ เจ‡เจธเจฆเฉ‡ เจกเฉˆเจฐเฉ€เจตเฉ‡เจŸเจฟเจตเจœเจผเฅค เจฎเฉˆเจ‚ เจชเจนเจฟเจฒเจพเจ‚ เจนเฉ€ เจ‰เฉฑเจชเจฐ เจœเจผเจฟเจ•เจฐ เจ•เฉ€เจคเจพ เจนเฉˆ เจ•เจฟ TPL เจ•เฉ‹เจฒ เจธเจพเจฐเฉ‡ เจฅเฉเจฐเฉˆเจกเจพเจ‚ เจตเจฟเฉฑเจš เจ•เจพเจฐเจœเจพเจ‚ เจจเฉ‚เฉฐ เจตเฉฐเจกเจฃ เจฒเจˆ เจฐเจฃเจจเฉ€เจคเฉ€เจ†เจ‚ เจฆเจพ เจชเฉเจฐเจฌเฉฐเจงเจจ เจ•เจฐเจจ เจฆเฉ€ เจธเจฎเจฐเฉฑเจฅเจพ เจนเฉˆเฅค เจ…เจœเจฟเจนเฉ€เจ†เจ‚ เจฐเจฃเจจเฉ€เจคเฉ€เจ†เจ‚ เจจเฉ‚เฉฐ TaskScheduler เจ•เจฒเจพเจธ เจฆเฉ‡ เจ‰เฉฑเจคเจฐเจพเจงเจฟเจ•เจพเจฐเฉ€เจ†เจ‚ เจตเจฟเฉฑเจš เจชเจฐเจฟเจญเจพเจธเจผเจฟเจค เจ•เฉ€เจคเจพ เจ—เจฟเจ† เจนเฉˆเฅค เจฒเจ—เจญเจ— เจ•เฉ‹เจˆ เจตเฉ€ เจฐเจฃเจจเฉ€เจคเฉ€ เจœเจฟเจธเจฆเฉ€ เจคเฉเจนเจพเจจเฉ‚เฉฐ เจฒเฉ‹เฉœ เจนเฉ‹ เจธเจ•เจฆเฉ€ เจนเฉˆ เจฒเจพเจ‡เจฌเฉเจฐเฉ‡เจฐเฉ€ เจตเจฟเฉฑเจš เจฒเฉฑเจญเฉ€ เจœเจพ เจธเจ•เจฆเฉ€ เจนเฉˆเฅค เจธเจฎเจพเจจเจพเจ‚เจคเจฐ เจเจ•เจธเจŸเฉˆเจ‚เจธเจผเจจ เจเจ•เจธเจŸเจฐเจพ, Microsoft เจฆเฉเจ†เจฐเจพ เจตเจฟเจ•เจธเจฟเจค เจ•เฉ€เจคเจพ เจ—เจฟเจ† เจนเฉˆ, เจชเจฐ .NET เจฆเจพ เจนเจฟเฉฑเจธเจพ เจจเจนเฉ€เจ‚ เจนเฉˆ, เจชเจฐ เจ‡เฉฑเจ• Nuget เจชเฉˆเจ•เฉ‡เจœ เจตเจœเฉ‹เจ‚ เจธเจชเจฒเจพเจˆ เจ•เฉ€เจคเจพ เจ—เจฟเจ† เจนเฉˆเฅค เจ†เจ“ เจ‰เจจเฉเจนเจพเจ‚ เจตเจฟเฉฑเจšเฉ‹เจ‚ เจ•เฉเจ เจจเฉ‚เฉฐ เจธเฉฐเจ–เฉ‡เจช เจตเจฟเฉฑเจš เจตเฉ‡เจ–เฉ€เจ:

  • CurrentThreadTaskScheduler - เจฎเฉŒเจœเฉ‚เจฆเจพ เจฅเฉเจฐเฉˆเจก 'เจคเฉ‡ เจ•เฉฐเจฎ เจšเจฒเจพเจ‰เจ‚เจฆเจพ เจนเฉˆ
  • เจฒเจฟเจฎเจŸเจฟเจก เจ•เจจเจ•เจฐเฉฐเจธเฉ€ เจฒเฉˆเจตเจฒ เจŸเจพเจธเจ• เจธเจผเฉˆเจกเจฟเจŠเจฒเจฐ โ€” เจชเฉˆเจฐเจพเจฎเฉ€เจŸเจฐ N เจฆเฉเจ†เจฐเจพ เจ‡เฉฑเจ•เฉ‹ เจธเจฎเฉ‡เจ‚ เจšเฉฑเจฒเจฃ เจตเจพเจฒเฉ‡ เจ•เจพเจฐเจœเจพเจ‚ เจฆเฉ€ เจธเฉฐเจ–เจฟเจ† เจจเฉ‚เฉฐ เจธเฉ€เจฎเจฟเจค เจ•เจฐเจฆเจพ เจนเฉˆ, เจœเฉ‹ เจ•เจฟ เจ•เฉฐเจธเจŸเจฐเจ•เจŸเจฐ เจตเจฟเฉฑเจš เจธเจตเฉ€เจ•เจพเจฐ เจ•เฉ€เจคเจพ เจœเจพเจ‚เจฆเจพ เจนเฉˆเฅค
  • OrderedTaskScheduler โ€” เจจเฉ‚เฉฐ LimitedConcurrencyLevelTaskScheduler(1) เจตเจœเฉ‹เจ‚ เจชเจฐเจฟเจญเจพเจธเจผเจฟเจค เจ•เฉ€เจคเจพ เจ—เจฟเจ† เจนเฉˆ, เจ‡เจธเจฒเจˆ เจ•เจพเจฐเจœเจพเจ‚ เจจเฉ‚เฉฐ เจ•เฉเจฐเจฎเจตเจพเจฐ เจšเจฒเจพเจ‡เจ† เจœเจพเจตเฉ‡เจ—เจพเฅค
  • WorkStealingTaskScheduler - เจ‰เจชเจ•เจฐเจฃ เจ•เฉฐเจฎ-เจšเฉ‹เจฐเฉ€ เจ•เจพเจฐเจœ เจตเฉฐเจก เจฒเจˆ เจชเจนเฉเฉฐเจš เจ…เจธเจฒ เจตเจฟเฉฑเจš เจ‡เจน เจ‡เฉฑเจ• เจตเฉฑเจ–เจฐเจพ เจฅเฉเจฐเฉˆเจกเจชเฉ‚เจฒ เจนเฉˆเฅค เจ‡เจธ เจธเจฎเฉฑเจธเจฟเจ† เจจเฉ‚เฉฐ เจนเฉฑเจฒ เจ•เจฐเจฆเจพ เจนเฉˆ เจ•เจฟ .NET เจฅเฉเจฐเฉˆเจกเจชเฉ‚เจฒ เจตเจฟเฉฑเจš เจ‡เฉฑเจ• เจธเจฅเจฟเจฐ เจ•เจฒเจพเจธ เจนเฉˆ, เจธเจพเจฐเฉ€เจ†เจ‚ เจเจชเจฒเฉ€เจ•เฉ‡เจธเจผเจจเจพเจ‚ เจฒเจˆ เจ‡เฉฑเจ•, เจœเจฟเจธเจฆเจพ เจฎเจคเจฒเจฌ เจนเฉˆ เจ•เจฟ เจชเฉเจฐเฉ‹เจ—เจฐเจพเจฎ เจฆเฉ‡ เจ‡เฉฑเจ• เจนเจฟเฉฑเจธเฉ‡ เจตเจฟเฉฑเจš เจ‡เจธเจฆเจพ เจ“เจตเจฐเจฒเฉ‹เจกเจฟเฉฐเจ— เจœเจพเจ‚ เจ—เจฒเจค เจตเจฐเจคเฉ‹เจ‚ เจฆเฉ‚เจœเฉ‡ เจตเจฟเฉฑเจš เจฎเจพเฉœเฉ‡ เจชเฉเจฐเจญเจพเจตเจพเจ‚ เจฆเจพ เจ•เจพเจฐเจจ เจฌเจฃ เจธเจ•เจฆเฉ€ เจนเฉˆเฅค เจ‡เจธ เจคเฉ‹เจ‚ เจ‡เจฒเจพเจตเจพ, เจ…เจœเจฟเจนเฉ‡ เจจเฉเจ•เจธ เจฆเฉ‡ เจ•เจพเจฐเจจ เจจเฉ‚เฉฐ เจธเจฎเจเจฃเจพ เจฌเจนเฉเจค เจฎเฉเจธเจผเจ•เจฒ เจนเฉˆ. เจ•เจฟ. เจชเฉเจฐเฉ‹เจ—เจฐเจพเจฎ เจฆเฉ‡ เจ‰เจนเจจเจพเจ‚ เจนเจฟเฉฑเจธเจฟเจ†เจ‚ เจตเจฟเฉฑเจš เจตเฉฑเจ–เจฐเฉ‡ WorkStealingTaskSchedulers เจฆเฉ€ เจตเจฐเจคเฉ‹เจ‚ เจ•เจฐเจจ เจฆเฉ€ เจฒเฉ‹เฉœ เจนเฉ‹ เจธเจ•เจฆเฉ€ เจนเฉˆ เจœเจฟเฉฑเจฅเฉ‡ เจฅเฉเจฐเฉˆเจกเจชเฉ‚เจฒ เจฆเฉ€ เจตเจฐเจคเฉ‹เจ‚ เจนเจฎเจฒเจพเจตเจฐ เจ…เจคเฉ‡ เจ…เจฃเจชเจ›เจพเจคเฉ€ เจนเฉ‹ เจธเจ•เจฆเฉ€ เจนเฉˆเฅค
  • เจ•เจคเจพเจฐเจฌเฉฑเจง เจŸเจพเจธเจ• เจธเจผเฉˆเจกเจฟเจŠเจฒเจฐ - เจคเฉเจนเจพเจจเฉ‚เฉฐ เจคเจฐเจœเฉ€เจนเฉ€ เจ•เจคเจพเจฐ เจจเจฟเจฏเจฎเจพเจ‚ เจฆเฉ‡ เจ…เจจเฉเจธเจพเจฐ เจ•เฉฐเจฎ เจ•เจฐเจจ เจฆเฉ€ เจ†เจ—เจฟเจ† เจฆเจฟเฉฐเจฆเจพ เจนเฉˆ
  • ThreadPerTaskScheduler โ€” เจนเจฐเฉ‡เจ• เจ•เฉฐเจฎ เจฒเจˆ เจ‡เฉฑเจ• เจตเฉฑเจ–เจฐเจพ เจฅเฉเจฐเฉˆเจก เจฌเจฃเจพเจ‰เจ‚เจฆเจพ เจนเฉˆ เจœเฉ‹ เจ‡เจธ เจ‰เฉฑเจคเฉ‡ เจšเจฒเจพเจ‡เจ† เจœเจพเจ‚เจฆเจพ เจนเฉˆเฅค เจ‰เจนเจจเจพเจ‚ เจ•เฉฐเจฎเจพเจ‚ เจฒเจˆ เจฒเจพเจญเจฆเจพเจ‡เจ• เจนเฉ‹ เจธเจ•เจฆเจพ เจนเฉˆ เจœเจฟเจนเจจเจพเจ‚ เจจเฉ‚เฉฐ เจชเฉ‚เจฐเจพ เจ•เจฐเจจ เจตเจฟเฉฑเจš เจ…เจšเจจเจšเฉ‡เจค เจฒเฉฐเจฌเจพ เจธเจฎเจพเจ‚ เจฒเฉฑเจ—เจฆเจพ เจนเฉˆเฅค

เจ‡เฉฑเจ• เจตเจงเฉ€เจ† เจตเฉ‡เจฐเจตเจพ เจนเฉˆ เจฒเฉ‡เจ– เจฎเจพเจˆเจ•เฉเจฐเฉ‹เจธเจพเจซเจŸ เจฌเจฒเฉŒเจ— 'เจคเฉ‡ TaskSchedulers เจฌเจพเจฐเฉ‡เฅค

เจŸเจพเจธเจ• เจจเจพเจฒ เจธเจฌเฉฐเจงเจค เจนเจฐ เจšเฉ€เจœเจผ เจฆเฉ€ เจธเฉเจตเจฟเจงเจพเจœเจจเจ• เจกเฉ€เจฌเฉฑเจ—เจฟเฉฐเจ— เจฒเจˆ, เจตเจฟเจœเจผเฉ‚เจ…เจฒ เจธเจŸเฉ‚เจกเฉ€เจ“ เจตเจฟเฉฑเจš เจ‡เฉฑเจ• เจŸเจพเจธเจ• เจตเจฟเฉฐเจกเฉ‹ เจนเฉˆเฅค เจ‡เจธ เจตเจฟเฉฐเจกเฉ‹ เจตเจฟเฉฑเจš เจคเฉเจธเฉ€เจ‚ เจ•เจพเจฐเจœ เจฆเฉ€ เจฎเฉŒเจœเฉ‚เจฆเจพ เจธเจฅเจฟเจคเฉ€ เจฆเฉ‡เจ– เจธเจ•เจฆเฉ‡ เจนเฉ‹ เจ…เจคเฉ‡ เจ•เฉ‹เจก เจฆเฉ€ เจตเจฐเจคเจฎเจพเจจ เจตเจฟเฉฑเจš เจšเฉฑเจฒเจฃ เจตเจพเจฒเฉ€ เจฒเจพเจˆเจจ 'เจคเฉ‡ เจœเจพ เจธเจ•เจฆเฉ‡ เจนเฉ‹เฅค

.NET: เจฎเจฒเจŸเฉ€เจฅเฉเจฐเฉˆเจกเจฟเฉฐเจ— เจ…เจคเฉ‡ เจ…เจธเจฟเฉฐเจ•เฉเจฐเฉ‹เจจเฉ€ เจจเจพเจฒ เจ•เฉฐเจฎ เจ•เจฐเจจ เจฒเจˆ เจŸเฉ‚เจฒเฅค เจญเจพเจ— 1

PLinq เจ…เจคเฉ‡ เจธเจฎเจพเจจเจพเจ‚เจคเจฐ เจ•เจฒเจพเจธ

เจŸเจพเจธเจ• เจ…เจคเฉ‡ เจ‰เจนเจจเจพเจ‚ เจฌเจพเจฐเฉ‡ เจ•เจนเฉ€ เจ—เจˆ เจนเจฐ เจšเฉ€เจœเจผ เจคเฉ‹เจ‚ เจ‡เจฒเจพเจตเจพ, .NET เจตเจฟเฉฑเจš เจฆเฉ‹ เจนเฉ‹เจฐ เจฆเจฟเจฒเจšเจธเจช เจŸเฉ‚เจฒ เจนเจจ: PLinq (Linq2Parallel) เจ…เจคเฉ‡ เจธเจฎเจพเจจเจพเจ‚เจคเจฐ เจ•เจฒเจพเจธเฅค เจชเจนเจฟเจฒเจพ เจ•เจˆ เจฅเจฐเจฟเฉฑเจกเจพเจ‚ 'เจคเฉ‡ เจธเจพเจฐเฉ‡ เจฒเจฟเฉฐเจ• เจ“เจชเจฐเฉ‡เจธเจผเจจเจพเจ‚ เจฆเฉ‡ เจธเจฎเจพเจจเจพเจ‚เจคเจฐ เจเจ—เจœเจผเฉ€เจ•เจฟเจŠเจธเจผเจจ เจฆเจพ เจตเจพเจ…เจฆเจพ เจ•เจฐเจฆเจพ เจนเฉˆเฅค เจฅเจฐเจฟเฉฑเจกเจพเจ‚ เจฆเฉ€ เจ—เจฟเจฃเจคเฉ€ WithDegreeOfParallelism เจเจ•เจธเจŸเฉˆเจ‚เจธเจผเจจ เจตเจฟเจงเฉ€ เจฆเฉ€ เจตเจฐเจคเฉ‹เจ‚ เจ•เจฐเจ•เฉ‡ เจธเฉฐเจฐเจšเจฟเจค เจ•เฉ€เจคเจพ เจœเจพ เจธเจ•เจฆเจพ เจนเฉˆเฅค เจฌเจฆเจ•เจฟเจธเจฎเจคเฉ€ เจจเจพเจฒ, เจœเจผเจฟเจ†เจฆเจพเจคเจฐ เจ…เจ•เจธเจฐ เจ‡เจธเจฆเฉ‡ เจกเจฟเจซเฉŒเจฒเจŸ เจฎเฉ‹เจก เจตเจฟเฉฑเจš PLinq เจ•เฉ‹เจฒ เจ‡เฉฑเจ• เจฎเจนเฉฑเจคเจตเจชเฉ‚เจฐเจจ เจ—เจคเฉ€ เจฒเจพเจญ เจชเฉเจฐเจฆเจพเจจ เจ•เจฐเจจ เจฒเจˆ เจคเฉเจนเจพเจกเฉ‡ เจกเฉ‡เจŸเจพ เจธเจฐเฉ‹เจค เจฆเฉ‡ เจ…เฉฐเจฆเจฐเฉ‚เจจเฉ€ เจฌเจพเจฐเฉ‡ เจฒเฉ‹เฉœเฉ€เจ‚เจฆเฉ€ เจœเจพเจฃเจ•เจพเจฐเฉ€ เจจเจนเฉ€เจ‚ เจนเฉเฉฐเจฆเฉ€ เจนเฉˆ, เจฆเฉ‚เจœเฉ‡ เจชเจพเจธเฉ‡, เจ•เฉ‹เจธเจผเจฟเจธเจผ เจ•เจฐเจจ เจฆเฉ€ เจฒเจพเจ—เจค เจฌเจนเฉเจค เจ˜เฉฑเจŸ เจนเฉˆ: เจคเฉเจนเจพเจจเฉ‚เฉฐ เจชเจนเจฟเจฒเจพเจ‚ AsParallel เจตเจฟเจงเฉ€ เจจเฉ‚เฉฐ เจ•เจพเจฒ เจ•เจฐเจจ เจฆเฉ€ เจœเจผเจฐเฉ‚เจฐเจค เจนเฉˆ. เจฒเจฟเฉฐเจ• เจคเจฐเฉ€เจ•เจฟเจ†เจ‚ เจฆเฉ€ เจฒเฉœเฉ€ เจ…เจคเฉ‡ เจชเฉเจฐเจฆเจฐเจธเจผเจจ เจŸเฉˆเจธเจŸเจพเจ‚ เจจเฉ‚เฉฐ เจšเจฒเจพเจ“เฅค เจ‡เจธ เจคเฉ‹เจ‚ เจ‡เจฒเจพเจตเจพ, เจญเจพเจ— เจตเจฟเจงเฉ€ เจฆเฉ€ เจตเจฐเจคเฉ‹เจ‚ เจ•เจฐเจ•เฉ‡ เจคเฉเจนเจพเจกเฉ‡ เจกเฉ‡เจŸเจพ เจธเจฐเฉ‹เจค เจฆเฉ€ เจชเฉเจฐเจ•เจฟเจฐเจคเฉ€ เจฌเจพเจฐเฉ‡ PLinq เจจเฉ‚เฉฐ เจตเจพเจงเฉ‚ เจœเจพเจฃเจ•เจพเจฐเฉ€ เจฆเฉ‡เจฃเจพ เจธเฉฐเจญเจต เจนเฉˆเฅค เจคเฉเจธเฉ€เจ‚ เจนเฉ‹เจฐ เจชเฉœเฉเจน เจธเจ•เจฆเฉ‡ เจนเฉ‹ เจ‡เฉฑเจฅเฉ‡ ะธ เจ‡เฉฑเจฅเฉ‡.

เจชเฉˆเจฐเจฒเจฒ เจธเจŸเฉˆเจŸเจฟเจ• เจ•เจฒเจพเจธ เจธเจฎเจพเจจเจพเจ‚เจคเจฐ เจตเจฟเฉฑเจš เจ‡เฉฑเจ• เจซเฉ‹เจฐเจš เจธเฉฐเจ—เฉเจฐเจนเจฟ เจฆเฉเจ†เจฐเจพ เจฆเฉเจนเจฐเจพเจ‰เจฃ, เจ‡เฉฑเจ• เจฒเจˆ เจฒเฉ‚เจช เจจเฉ‚เฉฐ เจšเจฒเจพเจ‰เจฃ, เจ…เจคเฉ‡ เจชเฉˆเจฐเจฒเจฒ เจ‡เจจเจตเฉ‹เจ• เจตเจฟเฉฑเจš เจ•เจˆ เจกเฉˆเจฒเฉ€เจ—เฉ‡เจŸเจพเจ‚ เจจเฉ‚เฉฐ เจšเจฒเจพเจ‰เจฃ เจฒเจˆ เจตเจฟเจงเฉ€เจ†เจ‚ เจชเฉเจฐเจฆเจพเจจ เจ•เจฐเจฆเจพ เจนเฉˆเฅค เจ—เจฃเจจเจพ เจชเฉ‚เจฐเฉ€ เจนเฉ‹เจฃ เจคเฉฑเจ• เจฎเฉŒเจœเฉ‚เจฆเจพ เจฅเฉเจฐเฉˆเฉฑเจก เจฆเจพ เจเจ—เจœเจผเฉ€เจ•เจฟเจŠเจธเจผเจจ เจฐเฉ‹เจ• เจฆเจฟเฉฑเจคเจพ เจœเจพเจตเฉ‡เจ—เจพเฅค เจฅเจฐเจฟเฉฑเจกเจพเจ‚ เจฆเฉ€ เจ—เจฟเจฃเจคเฉ€ เจจเฉ‚เฉฐ เจ†เจ–เจฐเฉ€ เจ†เจฐเจ—เฉ‚เจฎเฉˆเจ‚เจŸ เจฆเฉ‡ เจคเฉŒเจฐ 'เจคเฉ‡ ParallelOptions เจชเจพเจธ เจ•เจฐเจ•เฉ‡ เจธเฉฐเจฐเจšเจฟเจค เจ•เฉ€เจคเจพ เจœเจพ เจธเจ•เจฆเจพ เจนเฉˆเฅค เจคเฉเจธเฉ€เจ‚ เจตเจฟเจ•เจฒเจชเจพเจ‚ เจฆเฉ€ เจตเจฐเจคเฉ‹เจ‚ เจ•เจฐเจ•เฉ‡ TaskScheduler เจ…เจคเฉ‡ CancellationToken เจตเฉ€ เจจเจฟเจฐเจงเจพเจฐเจฟเจค เจ•เจฐ เจธเจ•เจฆเฉ‡ เจนเฉ‹เฅค

เจธเจฟเฉฑเจŸเจพ

เจœเจฆเฉ‹เจ‚ เจฎเฉˆเจ‚ เจ†เจชเจฃเฉ€ เจฐเจฟเจชเฉ‹เจฐเจŸ เจฆเฉ€ เจธเจฎเฉฑเจ—เจฐเฉ€ เจ…เจคเฉ‡ เจ‡เจธ เจคเฉ‹เจ‚ เจฌเจพเจ…เจฆ เจ†เจชเจฃเฉ‡ เจ•เฉฐเจฎ เจฆเฉŒเจฐเจพเจจ เจ‡เจ•เฉฑเจ เฉ€ เจ•เฉ€เจคเฉ€ เจœเจพเจฃเจ•เจพเจฐเฉ€ เจฆเฉ‡ เจ…เจงเจพเจฐ 'เจคเฉ‡ เจ‡เจน เจฒเฉ‡เจ– เจฒเจฟเจ–เจฃเจพ เจธเจผเฉเจฐเฉ‚ เจ•เฉ€เจคเจพ, เจคเจพเจ‚ เจฎเฉˆเจจเฉ‚เฉฐ เจ‰เจฎเฉ€เจฆ เจจเจนเฉ€เจ‚ เจธเฉ€ เจ•เจฟ เจ‡เจธ เจตเจฟเฉฑเจš เจ‡เฉฐเจจเจพ เจ•เฉเจ เจนเฉ‹เจตเฉ‡เจ—เจพเฅค เจนเฉเจฃ, เจœเจฆเฉ‹เจ‚ เจŸเฉˆเจ•เจธเจŸ เจเจกเฉ€เจŸเจฐ เจœเจฟเจธ เจตเจฟเฉฑเจš เจฎเฉˆเจ‚ เจ‡เจน เจฒเฉ‡เจ– เจŸเจพเจˆเจช เจ•เจฐ เจฐเจฟเจนเจพ เจนเจพเจ‚, เจฎเฉˆเจจเฉ‚เฉฐ เจฌเจฆเจจเจพเจฎเฉ€ เจจเจพเจฒ เจฆเฉฑเจธเจฆเจพ เจนเฉˆ เจ•เจฟ เจชเฉฐเจจเจพ 15 เจšเจฒเจพ เจ—เจฟเจ† เจนเฉˆ, เจฎเฉˆเจ‚ เจ…เฉฐเจคเจฐเจฟเจฎ เจจเจคเฉ€เจœเจฟเจ†เจ‚ เจจเฉ‚เฉฐ เจธเฉฐเจ–เฉ‡เจช เจ•เจฐเจพเจ‚เจ—เจพเฅค เจนเฉ‹เจฐ เจ—เฉเจฐเฉเจฐ, API, เจตเจฟเจœเจผเฉ‚เจ…เจฒ เจŸเฉ‚เจฒ เจ…เจคเฉ‡ เจจเฉเจ•เจธเจพเจจเจพเจ‚ เจจเฉ‚เฉฐ เจ…เจ—เจฒเฉ‡ เจฒเฉ‡เจ– เจตเจฟเฉฑเจš เจ•เจตเจฐ เจ•เฉ€เจคเจพ เจœเจพเจตเฉ‡เจ—เจพเฅค

เจธเจฟเฉฑเจŸเจพ:

  • เจ†เจงเฉเจจเจฟเจ• เจชเฉ€เจธเฉ€ เจฆเฉ‡ เจธเจฐเฉ‹เจคเจพเจ‚ เจฆเฉ€ เจตเจฐเจคเฉ‹เจ‚ เจ•เจฐเจจ เจฒเจˆ เจคเฉเจนเจพเจจเฉ‚เฉฐ เจฅเจฐเจฟเฉฑเจกเจพเจ‚, เจ…เจธเจฟเฉฐเจ•เฉเจฐเฉ‹เจจเฉ€ เจ…เจคเฉ‡ เจธเจฎเจพเจจเจคเจพเจตเจพเจ‚ เจจเจพเจฒ เจ•เฉฐเจฎ เจ•เจฐเจจ เจฒเจˆ เจธเจพเจงเจจเจพเจ‚ เจจเฉ‚เฉฐ เจœเจพเจฃเจจ เจฆเฉ€ เจœเจผเจฐเฉ‚เจฐเจค เจนเฉˆเฅค
  • .NET เจ•เฉ‹เจฒ เจ‡เจนเจจเจพเจ‚ เจ‰เจฆเฉ‡เจธเจผเจพเจ‚ เจฒเจˆ เจฌเจนเฉเจค เจธเจพเจฐเฉ‡ เจตเฉฑเจ–-เจตเฉฑเจ– เจŸเฉ‚เจฒ เจนเจจ
  • เจ‰เจน เจธเจพเจฐเฉ‡ เจ‡เฉฑเจ• เจตเจพเจฐ เจตเจฟเฉฑเจš เจชเฉเจฐเจ—เจŸ เจจเจนเฉ€เจ‚ เจนเฉ‹เจ, เจ‡เจธเจฒเจˆ เจคเฉเจธเฉ€เจ‚ เจ…เจ•เจธเจฐ เจตเจฟเจฐเจพเจธเจคเฉ€ เจฒเฉฑเจญ เจธเจ•เจฆเฉ‡ เจนเฉ‹, เจนเจพเจฒเจพเจ‚เจ•เจฟ, เจชเฉเจฐเจพเจฃเฉ‡ APIs เจจเฉ‚เฉฐ เจฌเจฟเจจเจพเจ‚ เจ•เจฟเจธเฉ‡ เจ•เฉ‹เจธเจผเจฟเจธเจผ เจฆเฉ‡ เจฌเจฆเจฒเจฃ เจฆเฉ‡ เจคเจฐเฉ€เจ•เฉ‡ เจนเจจ.
  • .NET เจตเจฟเฉฑเจš เจฅเจฐเจฟเฉฑเจกเจพเจ‚ เจจเจพเจฒ เจ•เฉฐเจฎ เจ•เจฐเจจเจพ เจฅเฉเจฐเฉˆเจก เจ…เจคเฉ‡ เจฅเฉเจฐเฉˆเจกเจชเฉ‚เจฒ เจ•เจฒเจพเจธเจพเจ‚ เจฆเฉเจ†เจฐเจพ เจฆเจฐเจธเจพเจ‡เจ† เจœเจพเจ‚เจฆเจพ เจนเฉˆ
  • Thread.Abort, Thread.Interrupt, เจ…เจคเฉ‡ Win32 API TerminateThread เจขเฉฐเจ— เจ–เจคเจฐเจจเจพเจ• เจนเจจ เจ…เจคเฉ‡ เจตเจฐเจคเฉ‹เจ‚ เจฒเจˆ เจธเจฟเจซเจผเจพเจฐเจธเจผ เจจเจนเฉ€เจ‚ เจ•เฉ€เจคเฉ‡ เจœเจพเจ‚เจฆเฉ‡ เจนเจจเฅค เจ‡เจธ เจฆเฉ€ เจฌเจœเจพเจ, CancellationToken เจตเจฟเจงเฉ€ เจฆเฉ€ เจตเจฐเจคเฉ‹เจ‚ เจ•เจฐเจจเจพ เจฌเจฟเจนเจคเจฐ เจนเฉˆ
  • เจชเฉเจฐเจตเจพเจน เจ‡เฉฑเจ• เจ•เฉ€เจฎเจคเฉ€ เจธเจฐเฉ‹เจค เจนเฉˆ เจ…เจคเฉ‡ เจ‡เจธเจฆเฉ€ เจธเจชเจฒเจพเจˆ เจธเฉ€เจฎเจค เจนเฉˆเฅค เจ…เจœเจฟเจนเฉ€เจ†เจ‚ เจธเจฅเจฟเจคเฉ€เจ†เจ‚ เจœเจฟเฉฑเจฅเฉ‡ เจฅเจฐเจฟเฉฑเจก เจธเจฎเจพเจ—เจฎเจพเจ‚ เจฆเฉ€ เจ‰เจกเฉ€เจ• เจตเจฟเฉฑเจš เจฐเฉเฉฑเจเฉ‡ เจนเฉ‹เจ เจนเฉ‹เจฃ เจคเฉ‹เจ‚ เจฌเจšเจฃเจพ เจšเจพเจนเฉ€เจฆเจพ เจนเฉˆเฅค เจ‡เจธเจฆเฉ‡ เจฒเจˆ TaskCompletionSource เจ•เจฒเจพเจธ เจฆเฉ€ เจตเจฐเจคเฉ‹เจ‚ เจ•เจฐเจจเจพ เจธเฉเจตเจฟเจงเจพเจœเจจเจ• เจนเฉˆ
  • เจธเจฎเจพเจจเจคเจพ เจ…เจคเฉ‡ เจ…เจธเจฟเฉฐเจ•เฉเจฐเฉ‹เจจเฉ€ เจจเจพเจฒ เจ•เฉฐเจฎ เจ•เจฐเจจ เจฒเจˆ เจธเจญ เจคเฉ‹เจ‚ เจธเจผเจ•เจคเฉ€เจธเจผเจพเจฒเฉ€ เจ…เจคเฉ‡ เจ‰เฉฑเจจเจค .NET เจŸเฉ‚เจฒ เจŸเจพเจธเจ• เจนเจจเฅค
  • c# async/await เจ“เจชเจฐเฉ‡เจŸเจฐ เจ—เฉˆเจฐ-เจฌเจฒเจพเจ•เจฟเฉฐเจ— เจ‰เจกเฉ€เจ• เจฆเฉ€ เจงเจพเจฐเจจเจพ เจจเฉ‚เฉฐ เจฒเจพเจ—เฉ‚ เจ•เจฐเจฆเฉ‡ เจนเจจ
  • เจคเฉเจธเฉ€เจ‚ TaskScheduler เจฆเฉเจ†เจฐเจพ เจชเฉเจฐเจพเจชเจค เจ•เจฒเจพเจธเจพเจ‚ เจฆเฉ€ เจตเจฐเจคเฉ‹เจ‚ เจ•เจฐเจ•เฉ‡ เจฅเฉเจฐเฉˆเจกเจพเจ‚ เจตเจฟเฉฑเจš เจ•เจพเจฐเจœเจพเจ‚ เจฆเฉ€ เจตเฉฐเจก เจจเฉ‚เฉฐ เจจเจฟเจฏเฉฐเจคเจฐเจฟเจค เจ•เจฐ เจธเจ•เจฆเฉ‡ เจนเฉ‹
  • ValueTask เจขเจพเจ‚เจšเจพ เจนเจพเจŸ-เจชเจพเจฅเจพเจ‚ เจ…เจคเฉ‡ เจฎเฉˆเจฎเฉ‹เจฐเฉ€-เจŸเฉเจฐเฉˆเจซเจฟเจ• เจจเฉ‚เฉฐ เจ…เจจเฉเจ•เฉ‚เจฒ เจฌเจฃเจพเจ‰เจฃ เจตเจฟเฉฑเจš เจ‰เจชเจฏเฉ‹เจ—เฉ€ เจนเฉ‹ เจธเจ•เจฆเจพ เจนเฉˆ
  • เจตเจฟเจœเจผเฉ‚เจ…เจฒ เจธเจŸเฉ‚เจกเฉ€เจ“ เจฆเฉ‡ เจŸเจพเจธเจ• เจ…เจคเฉ‡ เจฅเฉเจฐเฉˆเจก เจตเจฟเฉฐเจกเฉ‹เจœเจผ เจฎเจฒเจŸเฉ€-เจฅเฉเจฐเฉˆเจกเจก เจœเจพเจ‚ เจ…เจธเจฟเฉฐเจ•เฉเจฐเฉ‹เจจเจธ เจ•เฉ‹เจก เจจเฉ‚เฉฐ เจกเฉ€เจฌเฉฑเจ— เจ•เจฐเจจ เจฒเจˆ เจฌเจนเฉเจค เจธเจพเจฐเฉ€ เจœเจพเจฃเจ•เจพเจฐเฉ€ เจชเฉเจฐเจฆเจพเจจ เจ•เจฐเจฆเฉ‡ เจนเจจเฅค
  • PLinq เจ‡เฉฑเจ• เจตเจงเฉ€เจ† เจŸเฉ‚เจฒ เจนเฉˆ, เจชเจฐ เจนเฉ‹ เจธเจ•เจฆเจพ เจนเฉˆ เจ•เจฟ เจ‡เจธ เจตเจฟเฉฑเจš เจคเฉเจนเจพเจกเฉ‡ เจกเฉ‡เจŸเจพ เจธเจฐเฉ‹เจค เจฌเจพเจฐเฉ‡ เจฒเฉ‹เฉœเฉ€เจ‚เจฆเฉ€ เจœเจพเจฃเจ•เจพเจฐเฉ€ เจจเจพ เจนเฉ‹เจตเฉ‡, เจชเจฐ เจ‡เจธเจจเฉ‚เฉฐ เจตเจฟเจญเจพเจ—เฉ€เจ•เจฐเจจ เจตเจฟเจงเฉ€ เจฆเฉ€ เจตเจฐเจคเฉ‹เจ‚ เจ•เจฐเจ•เฉ‡ เจ เฉ€เจ• เจ•เฉ€เจคเจพ เจœเจพ เจธเจ•เจฆเจพ เจนเฉˆเฅค
  • เจจเฉ‚เฉฐ เจœเจพเจฐเฉ€ เจฐเฉฑเจ–เจฟเจ† เจœเจพเจตเฉ‡เจ—เจพโ€ฆ

เจธเจฐเฉ‹เจค: www.habr.com

เจ‡เฉฑเจ• เจŸเจฟเฉฑเจชเจฃเฉ€ เจœเฉ‹เฉœเฉ‹