|
|
|
สงสัยเรื่อง C# task ครับ ทำไม ค่า มันออกมาแปลกๆ |
|
|
|
|
|
|
|
อีกที่ตอบคำถามนี้ไปแล้ว เรื่อง task ถ้าไม่เข้าใจจริง ทำได้แล้วเดี๋ยวก็ลืมครับ
ส่วนทางแก้อีกวิธี คือ เก็บค่า i ไว้ในตัวแปร ครับ
|
|
|
|
|
Date :
2020-04-22 13:45:46 |
By :
PhrayaDev |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
ต้องทำความเข้าใจกับคำว่า task ก่อน ว่ามันคืออะไร
Task คือการทำงานของ class(object) หนึ่งๆ มีอยู่ 2 แบบ
1 แบบไม่ต้องรอผลลัพธ์ โดยโปรแกรม จะทำการส่งค่าต่างๆ คืนให้กับโปรแกรมหลักทาง callback function หรืออาจจะไม่ส่งค่าคืนก็ได้จบการทำงานไปเลยเมื่อทำเสร็จ วิธีการนี้ คำสั่งที่อยู่หลังการเรียกใช้ Task จะทำงาน ต่อเลย โดยไม่รอผลลัพธ์ ที่จะส่งกลับมา (พูดภาษาหนังก็จะเรียกว่าสร้าง Timeline ขึ้นมาใหม่ 55555 ภาษาคอมพิวเตอร์ ก็จะเรียกว่าสร้าง treat) เพราะมันไม่ได้ส่งผลลัพธ์กลับมา แต่มันจะวิ่งไปใช้งาน callback function เป็นตัวทำงานต่อจากมัน วิธีการนี้ ต้องระวังการทำงาน แบบสร้าง timeline ไม่รู้จบไว้ด้วย ซื้อมันจะเปลือง mem อย่างมาก ถ้าไม่ปิด treat ใด้ treat หนึ่ง (หรือปิด timeline นั่นแหล่ะ 555) เพราะมัน จะ clone object ขึ้นมาทำงานใหม่ (ถ้าเป็น php แบบเห็นภาพแบบเดียวกัน ก็จะเป็น multi curl)
2 แบบรอผลลัพธ์ วิธีการนี้ ก็เหมือนเรียกใช้ function ธรรมดา นี่แหล่ะแต่ต้องทำเป็น treat ไปทำงานนอก class หลัก (class ที่สร้างใหม่ขึ้นมาทำงานต่างหาก แล้วคืนค่า ในรูปแบบที่ถูกกำหนดไว้ วิธีการนี้จะใช้งานร่วมกับคำสั่ง Await ซึ่งจะมีรูปแบบการคืนค่าเป็นรูปแบบที่ถูกกำหนดขึ้นจาก คำสั่ง await วิธีการนี้ดีหน่อยตรงที่ รอการทำงาน เสร็จแล้ว class (object) ก็จะว่าง สามารถเรียกใช้ object เดิมได้ การทำงานกับ treat แบบนี้ ส่วนใหญ่ก็จะทำงานกับการเชื่อมต่อออกไป นอกเครื่อง(อุปกรณ์อื่นๆ) แล้วต้องรอผลลัพธ์กลับมา ถีงจะทำงานต่อได้
เมื่อเข้าใจหลักการทำงานของมัน แล้วก็จะเข้าใจว่าเราจะสร้างตัวแปร มารองรับยังไง หรือจะสร้าง callback function มารองรับมันยังไงดี
|
|
|
|
|
Date :
2020-04-23 22:33:52 |
By :
Chaidhanan |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Load balance : Server 02
|