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

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

11
วิธีการโทรอย่างปลอดภัยวิธี async ใน C # โดยไม่ต้องรอ
ฉันมีasyncวิธีการที่ไม่ส่งคืนข้อมูล: public async Task MyAsyncMethod() { // do some stuff async, don't return any data } ฉันกำลังเรียกสิ่งนี้จากวิธีอื่นซึ่งคืนค่าข้อมูลบางอย่าง public string GetStringData() { MyAsyncMethod(); // this generates a warning and swallows exceptions return "hello world"; } การโทรMyAsyncMethod()โดยไม่รอมันทำให้เกิด " เพราะการโทรนี้ไม่รอวิธีการปัจจุบันยังคงทำงานก่อนที่การโทรจะเสร็จสิ้น " เตือนใน visual studio ในหน้าคำเตือนนั้นระบุว่า: คุณควรพิจารณาปราบปรามเตือนเฉพาะถ้าคุณแน่ใจว่าคุณไม่ต้องการที่จะรอให้สายตรงกันที่จะเสร็จสมบูรณ์และว่าวิธีการที่เรียกว่าจะไม่เพิ่มข้อยกเว้นใด ๆ ฉันแน่ใจว่าฉันไม่ต้องการรอให้การโทรเสร็จสมบูรณ์ ฉันไม่ต้องการหรือมีเวลา แต่การโทรอาจเพิ่มข้อยกเว้น ฉันพบปัญหานี้สองสามครั้งและฉันแน่ใจว่าเป็นปัญหาทั่วไปที่ต้องมีวิธีแก้ไขปัญหาร่วมกัน ฉันจะเรียกวิธีการ async …

2
เมื่อใช้ Task.Run อย่างถูกต้องและเมื่อรอเพียง async
Task.Runผมอยากจะขอให้คุณอยู่กับความเห็นของคุณเกี่ยวกับสถาปัตยกรรมที่ถูกต้องเมื่อใช้ ฉันกำลังประสบกับความล้าหลัง UI ในแอปพลิเคชัน WPF .NET 4.5 ของเรา (ด้วยกรอบ Caliburn Micro) โดยทั่วไปฉันกำลังทำ (ตัวอย่างโค้ดที่ง่ายมาก): public class PageViewModel : IHandle<SomeMessage> { ... public async void Handle(SomeMessage message) { ShowLoadingAnimation(); // Makes UI very laggy, but still not dead await this.contentLoader.LoadContentAsync(); HideLoadingAnimation(); } } public class ContentLoader { public async Task LoadContentAsync() { …

6
งานเรคของ Rails ให้การเข้าถึงกับรุ่น ActiveRecord หรือไม่?
ฉันพยายามสร้างงานเรคที่กำหนดเอง แต่ดูเหมือนว่าฉันไม่สามารถเข้าถึงโมเดลของฉันได้ ฉันคิดว่านี่เป็นสิ่งที่รวมอยู่ในงานทางรถไฟโดยปริยาย ฉันมีรหัสต่อไปนี้ใน lib / task / test.rake: namespace :test do task :new_task do puts Parent.all.inspect end end และนี่คือรูปแบบผู้ปกครองของฉันที่มีลักษณะ: class Parent < ActiveRecord::Base has_many :children end มันเป็นตัวอย่างง่ายๆ แต่ฉันได้รับข้อผิดพลาดดังต่อไปนี้: /> rake test:new_task (in /Users/arash/Documents/dev/soft_deletes) rake aborted! uninitialized constant Parent (See full trace by running task with --trace) ความคิดใด ๆ ขอบคุณ

5
ความต่อเนื่องของงานบนเธรด UI
มีวิธี 'มาตรฐาน' เพื่อระบุว่างานต่อเนื่องควรทำงานบนเธรดที่งานเริ่มต้นถูกสร้างขึ้น? ขณะนี้ฉันมีรหัสด้านล่าง - มันใช้งานได้ แต่คอยติดตามดิสแพตเชอร์และการสร้างแอคชั่นที่สองดูเหมือนจะเป็นค่าใช้จ่ายที่ไม่จำเป็น dispatcher = Dispatcher.CurrentDispatcher; Task task = Task.Factory.StartNew(() => { DoLongRunningWork(); }); Task UITask= task.ContinueWith(() => { dispatcher.Invoke(new Action(() => { this.TextBlock1.Text = "Complete"; } });
214 c#  .net  wpf  multithreading  task 


6
การใช้งานสำหรับ Task.FromResult คืออะไร <TResult> ใน C #
ใน C # และ TPL ( Task Parallel Library ) Taskคลาสจะแสดงงานต่อเนื่องที่สร้างมูลค่าประเภท T ฉันต้องการที่จะรู้ว่าสิ่งที่จำเป็นสำหรับวิธีการTask.FromResult ? นั่นคือ: ในสถานการณ์ที่คุณมีมูลค่าที่ผลิตอยู่แล้วสิ่งที่จำเป็นต้องห่อกลับเข้าไปในงานคืออะไร? สิ่งเดียวที่อยู่ในใจคือมันถูกใช้เป็นอะแดปเตอร์สำหรับวิธีการอื่นที่ยอมรับอินสแตนซ์ของงาน

12
ฉันจะยกเลิก / ยกเลิกภารกิจของ TPL ได้อย่างไร
ในหัวข้อฉันสร้างบางอย่าง System.Threading.Taskและเริ่มต้นแต่ละงาน เมื่อฉันทำ.Abort()เพื่อฆ่าเธรดงานจะไม่ถูกยกเลิก ฉันจะส่ง.Abort()ไปยังงานของฉันได้อย่างไร
156 c#  .net  multithreading  task  abort 

15
เรียกใช้งาน PHP แบบอะซิงโครนัส
ฉันทำงานกับเว็บแอปพลิเคชันที่ค่อนข้างใหญ่และแบ็กเอนด์ส่วนใหญ่เป็น PHP มีหลายที่ในรหัสที่ฉันต้องทำงานให้เสร็จ แต่ฉันไม่ต้องการให้ผู้ใช้รอผลลัพธ์ ตัวอย่างเช่นเมื่อสร้างบัญชีใหม่ฉันต้องส่งอีเมลต้อนรับให้พวกเขา แต่เมื่อพวกเขากดปุ่ม 'เสร็จสิ้นการลงทะเบียน' ฉันไม่ต้องการให้รอจนกว่าอีเมลจะถูกส่งจริงฉันแค่ต้องการเริ่มต้นกระบวนการและส่งข้อความกลับไปยังผู้ใช้ทันที จนถึงตอนนี้ในบางแห่งฉันใช้สิ่งที่รู้สึกเหมือนแฮ็คกับ exec () โดยทั่วไปการทำสิ่งต่าง ๆ เช่น: exec("doTask.php $arg1 $arg2 $arg3 &gt;/dev/null 2&gt;&amp;1 &amp;"); ซึ่งดูเหมือนจะใช้งานได้ แต่ฉันสงสัยว่ามีวิธีที่ดีกว่านี้หรือไม่ ฉันกำลังพิจารณาที่จะเขียนระบบที่จัดคิวงานในตาราง MySQL และสคริปต์ PHP ที่ใช้งานมานานแยกต่างหากซึ่งจะสืบค้นตารางนั้นหนึ่งวินาทีและดำเนินงานใหม่ ๆ ที่พบ สิ่งนี้จะมีประโยชน์ในการให้ฉันแบ่งงานระหว่างเครื่องจักรของคนงานหลายคนในอนาคตถ้าฉันต้องการ ฉันกำลังคิดค้นวงล้ออีกครั้งหรือไม่? มีวิธีแก้ปัญหาที่ดีกว่าแฮ็ค exec () หรือคิว MySQL หรือไม่?

5
'รอ' ทำงาน แต่เรียกงานผลลัพธ์ค้าง / หยุดชะงัก
ฉันมีการทดสอบสี่ครั้งต่อไปนี้และการทดสอบครั้งสุดท้ายแฮงค์เมื่อฉันเรียกใช้ ทำไมสิ่งนี้จึงเกิดขึ้น: [Test] public void CheckOnceResultTest() { Assert.IsTrue(CheckStatus().Result); } [Test] public async void CheckOnceAwaitTest() { Assert.IsTrue(await CheckStatus()); } [Test] public async void CheckStatusTwiceAwaitTest() { Assert.IsTrue(await CheckStatus()); Assert.IsTrue(await CheckStatus()); } [Test] public async void CheckStatusTwiceResultTest() { Assert.IsTrue(CheckStatus().Result); // This hangs Assert.IsTrue(await CheckStatus()); } private async Task&lt;bool&gt; CheckStatus() { var restClient = …
126 c#  nunit  task  deadlock  async-await 

5
ฉันจะเปิดใช้งานแท็กงาน TODO / FIXME / XXX ใน Eclipse ได้อย่างไร
ตลอดหลายปีที่ใช้ Eclipse ฉันไม่เคยรู้มาก่อนเลยว่าแท็กความคิดเห็น TODO / FIXME / XXX ควรจะปรากฏในรายการงาน เห็นได้ชัดว่านี่เป็นสิ่งที่ถูกปิดใช้งานโดยค่าเริ่มต้นเนื่องจากฉันใช้แท็กเหล่านั้นมานานเท่าที่ฉันใช้ Eclipse และฉันไม่เคยเห็นหนึ่งในนั้นปรากฏในรายการงาน ใครสามารถระบุวิธีการเปิดใช้งานคุณสมบัตินี้? ฉันไม่เห็นตัวเลือกการตั้งค่าที่ใดก็ตามที่ระบุว่ามีผลกระทบของ 'ให้แท็กซอร์สโค้ดของฉันปรากฏในรายการงาน' มันจะเป็นคุณสมบัติที่ดีถ้ามันมีอยู่จริง แต่ฉันเริ่มจะสงสัย ฉันถามไปรอบ ๆ และตามที่คนอื่นแนะนำฉันนี่คือบางสิ่งที่เห็นได้ชัดว่าไม่มีผล แต่ฉันได้ลองแล้ว: การอัปเกรดเป็น Eclipse เวอร์ชันล่าสุด กำลังรีสตาร์ท Eclipse การปิดและเปิดรายการงานอีกครั้ง กำลังรีเฟรชโครงการ ฉันกำลังใช้: Eclipse Java EE IDE สำหรับนักพัฒนาเว็บ เวอร์ชัน: Helios Service Release 1 Build id: 20100917-0705
121 eclipse  tags  task 

2
ความแตกต่างระหว่าง await และ ContinueWith
คนที่สามารถอธิบายถ้าawaitและContinueWithมีความหมายเหมือนหรือไม่ได้อยู่ในตัวอย่างต่อไปนี้ ฉันพยายามใช้ TPL เป็นครั้งแรกและอ่านเอกสารทั้งหมดแล้ว แต่ไม่เข้าใจความแตกต่าง รอ : String webText = await getWebPage(uri); await parseData(webText); ดำเนินการต่อด้วย : Task&lt;String&gt; webText = new Task&lt;String&gt;(() =&gt; getWebPage(uri)); Task continue = webText.ContinueWith((task) =&gt; parseData(task.Result)); webText.Start(); continue.Wait(); เป็นที่ต้องการมากกว่าอีกสถานการณ์หนึ่งหรือไม่?

2
รองานที่เสร็จสมบูรณ์เช่นเดียวกับงานผลลัพธ์?
ฉันกำลังอ่าน " Concurrency in C # Cookbook " โดย Stephen Cleary และสังเกตเห็นเทคนิคต่อไปนี้: var completedTask = await Task.WhenAny(downloadTask, timeoutTask); if (completedTask == timeoutTask) return null; return await downloadTask; downloadTaskคือเรียกร้องให้httpclient.GetStringAsyncและกำลังดำเนินการtimeoutTaskTask.Delay ในกรณีที่ไม่หมดเวลาแสดงว่าdownloadTaskเป็นที่เรียบร้อยแล้ว เหตุใดจึงจำเป็นต้องรอเป็นครั้งที่สองแทนที่จะกลับมาdownloadTask.Resultเนื่องจากงานเสร็จเรียบร้อยแล้ว

7
Timer & TimerTask เทียบกับ Thread + sleep ใน Java
ฉันพบคำถามคล้าย ๆ กันที่ถามที่นี่ แต่ไม่มีคำตอบสำหรับความพึงพอใจของฉัน ดังนั้นจึงเปลี่ยนคำถามอีกครั้ง - ฉันมีงานที่ต้องทำเป็นระยะ (พูดช่วงเวลา 1 นาที) อะไรคือข้อดีของการใช้ Timertask &amp; Timer เพื่อทำสิ่งนี้ซึ่งต่างจากการสร้างเธรดใหม่ที่มีการวนซ้ำแบบไม่มีที่สิ้นสุดพร้อมกับโหมดสลีป ข้อมูลโค้ดโดยใช้ timertask- TimerTask uploadCheckerTimerTask = new TimerTask(){ public void run() { NewUploadServer.getInstance().checkAndUploadFiles(); } }; Timer uploadCheckerTimer = new Timer(true); uploadCheckerTimer.scheduleAtFixedRate(uploadCheckerTimerTask, 0, 60 * 1000); ข้อมูลโค้ดโดยใช้เธรดและสลีป - Thread t = new Thread(){ public void run() { …
102 java  timer  while-loop  sleep  task 


3
ไม่พบข้อยกเว้นของงานโดยการรอบนงานหรือการเข้าถึงคุณสมบัติข้อยกเว้น เป็นผลให้ข้อยกเว้นที่ไม่สามารถสังเกตได้คือ
สิ่งนี้หมายความว่าอย่างไรและจะแก้ไขได้อย่างไร? ฉันใช้งาน TPL ข้อผิดพลาดทั้งหมด ไม่พบข้อยกเว้นของงานโดยการรอบนงานหรือการเข้าถึงคุณสมบัติข้อยกเว้น ด้วยเหตุนี้ข้อยกเว้นที่ไม่สามารถสังเกตได้จึงถูกเปลี่ยนใหม่โดยเธรด Finalizer ใน System.Threading.Tasks.TaskExceptionHolder.Finalize () mscorlib

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.