ConfigureAwait คืออะไร
ConfigureAwait คืออะไร

วีดีโอ: ConfigureAwait คืออะไร

วีดีโอ: ConfigureAwait คืออะไร
วีดีโอ: Which do I use, ConfigureAwait True or False? 2024, พฤศจิกายน
Anonim

ConfigureAwait (เท็จ) เกี่ยวข้องกับงานที่เสร็จสิ้นแล้วตามเวลาที่รอ (ซึ่งเป็นเรื่องปกติธรรมดาอย่างไม่น่าเชื่อ) จากนั้น ConfigureAwait (เท็จ) จะไม่มีความหมาย เนื่องจากเธรดยังคงรันโค้ดในเมธอดหลังจากนี้และยังคงอยู่ในบริบทเดิมที่เคยมี

ต่อมาอาจมีคนถามว่า ConfigureAwait มีประโยชน์อย่างไร?

ConfigureAwait ( เท็จ ) กำหนดค่างานเพื่อไม่ให้มีการเรียกใช้งานต่อหลังจากรอในบริบทของผู้โทร ดังนั้นเพื่อหลีกเลี่ยงการชะงักงันที่เป็นไปได้

ด้านบนนี้ SynchronizationContext คืออะไร การซิงโครไนซ์บริบท คือการแสดงสภาพแวดล้อมปัจจุบันที่โค้ดของเรากำลังทำงานอยู่ กล่าวคือ ในโปรแกรมแบบอะซิงโครนัส เมื่อเรามอบหมายหน่วยงานหนึ่งไปยังเธรดอื่น เราจะจับภาพสภาพแวดล้อมปัจจุบันและจัดเก็บไว้ในอินสแตนซ์ของ การซิงโครไนซ์บริบท และวางไว้บนวัตถุงาน

เมื่อคำนึงถึงสิ่งนี้ การใช้ ConfigureAwait คืออะไร?

โดยใช้ ConfigureAwait (เท็จ) เพื่อหลีกเลี่ยงภาวะชะงักงันถือเป็นแนวทางปฏิบัติที่อันตราย คุณจะต้อง ใช้ ConfigureAwait (เท็จ) สำหรับทุกการรอคอยในการปิดสกรรมกริยาของวิธีการทั้งหมดที่เรียกใช้โดยรหัสการบล็อก รวมถึงรหัสบุคคลที่สามและรหัสบุคคลที่สามทั้งหมด โดยใช้ ConfigureAwait (เท็จ) เพื่อหลีกเลี่ยงการชะงักงันเป็นเพียงการแฮ็คที่ดีที่สุด)

GetAwaiter คืออะไร?

GetAwaiter () เมธอดซึ่งส่งคืนอินสแตนซ์ที่มีเมธอด GetResult() เมื่อใช้กับงานที่ผิดพลาด GetResult() จะเผยแพร่ข้อยกเว้นดั้งเดิม (นี่คือวิธีที่ “งานรอ” ได้รับพฤติกรรม) GetResult() เพราะจะรักษาข้อยกเว้นของงานไว้ แทนที่จะรวมไว้ใน AggregateException

แนะนำ: