ฟังก์ชัน DoEvents

นำไปใช้กับ
Access for Microsoft 365 Access 2024 Access 2021 Access 2019 Access 2016

หมายเหตุ

ฟังก์ชัน วิธีการ วัตถุ หรือคุณสมบัติที่อธิบายไว้ในหัวข้อนี้จะถูกปิดใช้งานถ้า Microsoft Jet Expression Service กําลังทํางานในโหมด Sandbox ซึ่งจะป้องกันการประเมินนิพจน์ที่อาจไม่ปลอดภัย สําหรับข้อมูลเพิ่มเติมเกี่ยวกับโหมด Sandbox ให้ค้นหา "โหมด Sandbox" ในวิธีใช้

ให้การดําเนินการเพื่อให้ระบบปฏิบัติการสามารถประมวลผลเหตุการณ์อื่นๆ ได้

ไวยากรณ์

DoEvents( )

ข้อสังเกต

ฟังก์ชัน DoEvents ส่งกลับจํานวนเต็มที่แสดงจํานวนฟอร์มที่เปิดอยู่ใน Microsoft Visual Basic เวอร์ชันสแตนด์อโลน เช่น Visual Basic, Professional Edition DoEvents จะส่งกลับค่าศูนย์ในแอปพลิเคชันอื่นๆ ทั้งหมด

DoEvents ส่งต่อการควบคุมไปยังระบบปฏิบัติการ การควบคุมจะถูกส่งกลับหลังจากที่ระบบปฏิบัติการเสร็จสิ้นการประมวลผลเหตุการณ์ในคิว และคีย์ทั้งหมดในคิว SendKeys ถูกส่งไปแล้ว

DoEvents มีประโยชน์มากที่สุดสําหรับสิ่งง่ายๆ เช่น การอนุญาตให้ผู้ใช้สามารถยกเลิกกระบวนการหลังจากที่เริ่มต้นขึ้นแล้ว ตัวอย่างเช่น การค้นหาไฟล์ สําหรับกระบวนการที่ใช้เวลานาน การยอมจํานนต่อหน่วยประมวลผลจะดีกว่าโดยใช้ตัวจับเวลาหรือการมอบหมายงานให้กับคอมโพเนนต์ ActiveX EXE ในกรณีหลังงานสามารถดําเนินต่อไปได้อย่างอิสระจากแอปพลิเคชันของคุณและระบบปฏิบัติการจะดูแลการทํางานหลายอย่างพร้อมกันและการแบ่งเวลา

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

ตัวอย่าง

หมายเหตุ

ตัวอย่างต่อไปนี้จะสาธิตการใช้ฟังก์ชันนี้ในโมดูล Visual Basic for Applications (VBA) สําหรับข้อมูลเพิ่มเติมเกี่ยวกับการทํางานกับ VBA ให้เลือก การอ้างอิงนักพัฒนาในรายการ ดรอปดาวน์ที่อยู่ถัดจาก ค้นหา แล้วใส่คําอย่างน้อยหนึ่งคําในกล่องค้นหา

ตัวอย่างนี้ใช้ฟังก์ชัน DoEvents เพื่อทําให้การดําเนินการมีผลต่อระบบปฏิบัติการทุกๆ 1000 รอบของการวนซ้ํา DoEvents ส่งกลับจํานวนฟอร์ม Visual Basic ที่เปิดอยู่ แต่เฉพาะเมื่อแอปพลิเคชันโฮสต์คือ Visual Basic เท่านั้น

' Create a variable to hold number of 
' Visual Basic forms loaded and visible.
Dim I, OpenForms
For I = 1 To 150000    ' Start loop.
    If I Mod 1000 = 0 Then  ' If loop has repeated
                            ' 1000 times.
        OpenForms = DoEvents  ' Yield to operating system.
    End If
Next I    ' Increment loop counter.