คำถามติดแท็ก task

งานคือสิ่งที่เป็นนามธรรมที่ใช้ในการทำงานร่วมกับการทำงานพร้อมกันสามารถแสดงถึงการดำเนินการที่ควรดำเนินการพร้อมกันกับส่วนที่เหลือของโปรแกรม งานคือเธรดการดำเนินการพร้อมกันใน Ada และแสดงถึงการดำเนินการแบบอะซิงโครนัสใน. NET และยังสอดคล้องกับเธรดใน Java

5
ฉันควรกังวลเกี่ยวกับ "วิธีการ async นี้ไม่มีตัวดำเนินการ" รอ "และจะเรียกใช้คำเตือนพร้อมกัน"
ฉันมีอินเทอร์เฟซที่เปิดเผยวิธีการ async บางอย่าง โดยเฉพาะอย่างยิ่งมันมีวิธีการที่กำหนดไว้ซึ่งส่งคืน Task หรือ Task <T> ฉันใช้คำหลัก async / await ฉันอยู่ระหว่างการใช้งานอินเทอร์เฟซนี้ อย่างไรก็ตามในวิธีการเหล่านี้บางส่วนการนำไปใช้งานนี้ไม่มีอะไรต้องรอ ด้วยเหตุนี้ฉันจึงได้รับคำเตือนของคอมไพเลอร์ "วิธีการ async นี้ไม่มีตัวดำเนินการ 'รอ' และจะทำงานพร้อมกัน ... " ฉันเข้าใจว่าทำไมฉันถึงได้รับข้อผิดพลาด แต่ฉันสงสัยว่าฉันควรทำอะไรกับพวกเขาในบริบทนี้หรือไม่ รู้สึกผิดที่ละเลยคำเตือนของคอมไพเลอร์ ฉันรู้ว่าฉันสามารถแก้ไขได้โดยรองานเรียกใช้ แต่รู้สึกว่าผิดสำหรับวิธีการที่ใช้งานได้ไม่แพงเพียงไม่กี่อย่าง ดูเหมือนว่ามันจะเพิ่มค่าใช้จ่ายที่ไม่จำเป็นในการดำเนินการ แต่ฉันก็ไม่แน่ใจว่ามีอยู่แล้วหรือไม่เพราะมีคีย์เวิร์ด async อยู่ ฉันควรเพิกเฉยต่อคำเตือนหรือมีวิธีการแก้ไขที่ฉันไม่เห็นหรือไม่?

4
Platform.runLater และ Task ใน JavaFX
ฉันได้ทำการค้นคว้าเกี่ยวกับเรื่องนี้มาบ้าง แต่ฉันก็ยังสับสนมากที่จะพูดอย่างน้อยที่สุด ใครช่วยยกตัวอย่างที่เป็นรูปธรรมว่าควรใช้Taskเมื่อไรและควรใช้เมื่อPlatform.runLater(Runnable);ใด อะไรคือความแตกต่าง? มีกฎทองในการใช้สิ่งเหล่านี้หรือไม่? แก้ไขฉันด้วยถ้าฉันผิด แต่ "Object" ทั้งสองนี้ไม่ใช่วิธีการสร้างเธรดอื่นภายในเธรดหลักใน GUI (ใช้สำหรับอัปเดต GUI)?

7
Task.Run ด้วยพารามิเตอร์?
Threading.Tasksผมทำงานในโครงการเครือข่ายแบบมัลติทาสกิ้และฉันใหม่ ฉันใช้งานง่ายTask.Factory.StartNew()และฉันสงสัยว่าจะทำได้Task.Run()อย่างไร? นี่คือรหัสพื้นฐาน: Task.Factory.StartNew(new Action<object>( (x) => { // Do something with 'x' }), rawData); ฉันตรวจสอบSystem.Threading.Tasks.TaskในObject Browserแล้วไม่พบAction<T>พารามิเตอร์ like มีเพียงActionที่ใช้voidพารามิเตอร์และไม่มีประเภท มีเพียง 2 สิ่งที่คล้ายกัน: static Task Run(Action action)และstatic Task Run(Func<Task> function)แต่ไม่สามารถโพสต์พารามิเตอร์ด้วยทั้งสองอย่าง ใช่ฉันรู้ว่าฉันสามารถสร้างวิธีการขยายแบบง่าย ๆ ได้ แต่คำถามหลักของฉันคือเราสามารถเขียนเป็นบรรทัดเดียวด้วยTask.Run()?

3
จะประกาศภารกิจที่ยังไม่เริ่มต้นซึ่งจะรองานอื่นได้อย่างไร
ฉันทำการทดสอบหน่วยนี้แล้วและฉันไม่เข้าใจว่าทำไม "รอ Task.Delay ()" ไม่รอ! [TestMethod] public async Task SimpleTest() { bool isOK = false; Task myTask = new Task(async () => { Console.WriteLine("Task.BeforeDelay"); await Task.Delay(1000); Console.WriteLine("Task.AfterDelay"); isOK = true; Console.WriteLine("Task.Ended"); }); Console.WriteLine("Main.BeforeStart"); myTask.Start(); Console.WriteLine("Main.AfterStart"); await myTask; Console.WriteLine("Main.AfterAwait"); Assert.IsTrue(isOK, "OK"); } นี่คือผลลัพธ์ของการทดสอบหน่วย: สิ่งนี้เป็นไปได้อย่างไร "รอ" ไม่รอและเธรดหลักยังคงดำเนินต่อไป?
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.