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

1
ตัวควบคุม Async ใน ASP.NET MVC: ข้อดีจริง / เป็นอย่างไร
ฉันทำงานผ่านบทความเกี่ยวกับวิธีการควบคุมแบบอะซิงโครนัสใน ASP.NET MVC ( http://visualstudiomagazine.com/articles/2013/07/23/async-actions-in-aspnet-mvc-4.aspx ) และฉันคิดว่า ฉันอาจจะพลาดจุดนี้ ลองใช้วิธีนี้ที่ฉันเขียนซึ่งคล้ายกับตัวอย่างจากบทความ: [HttpGet] [AsyncTimeout(8000)] [HandleError(ExceptionType = typeof(TimeoutException), View = "TimedOut")] public async Task<ActionResult> Index(CancellationToken cancellationToken) { WidgetPageViewModel model = new WidgetPageViewModel() { toAdd = new Widget() }; model.all = await _repo.GetAllAsync(cancellationToken); return View(model); } เมื่อฉันเข้าใจสิ่งต่าง ๆ นี่คือสิ่งที่จะเกิดขึ้นในรันไทม์: เธรด ASP.NET จะถูกสร้างขึ้นสำหรับคำขอ HTTP ขาเข้า หัวข้อนี้จะ …

2
แนวทางปฏิบัติที่ดีที่สุดเมื่อจัดการงานอะซิงโครนัสที่ใช้เวลานาน
ฉันอยู่ในช่วงการออกแบบของโครงการที่ผู้ใช้ปลายทางจะส่งคำขอจากหน้าเว็บที่จะวางไข่งานที่ดำเนินการแบบอะซิงโครนัสที่ใช้งานมานาน มี "แนวปฏิบัติที่ดีที่สุด" สำหรับปัญหานี้หรือไม่? บริการเว็บและนายหน้าบริการเป็นวิธีที่ดีหรือไม่? คิวการส่งข้อความของ Microsoft สามารถใช้งานได้ที่นี่หรือไม่

4
คุณเก็บรหัสด้วยการอ่าน / การเรียกกลับต่อเนื่องได้อย่างไร?
สรุป: มีรูปแบบการปฏิบัติที่ดีที่สุดบางอย่างที่ฉันสามารถติดตามเพื่อให้โค้ดของฉันสามารถอ่านได้แม้จะใช้รหัสอะซิงโครนัสและการโทรกลับหรือไม่ ฉันใช้ไลบรารี JavaScript ที่ทำสิ่งต่างๆมากมายแบบอะซิงโครนัสและอาศัยการโทรกลับอย่างหนัก ดูเหมือนว่าการเขียนวิธี "โหลด A, โหลด B, ... " ง่าย ๆ นั้นค่อนข้างซับซ้อนและยากที่จะติดตามโดยใช้รูปแบบนี้ ขอยกตัวอย่าง (contrived) สมมติว่าฉันต้องการโหลดรูปภาพจำนวนมาก (แบบอะซิงโครนัส) จากเว็บเซิร์ฟเวอร์ระยะไกล ใน C # / async ฉันจะเขียนสิ่งนี้: disableStartButton(); foreach (myData in myRepository) { var result = await LoadImageAsync("http://my/server/GetImage?" + myData.Id); if (result.Success) { myData.Image = result.Data; } else { write("error loading …

2
จะเกิดอะไรขึ้นเมื่อเธรดรองานในขณะที่ลูป?
หลังจากจัดการกับรูปแบบ async / คอยรูปของ C # ในขณะนี้ฉันก็ตระหนักว่าฉันไม่รู้วิธีอธิบายสิ่งที่เกิดขึ้นในรหัสต่อไปนี้: async void MyThread() { while (!_quit) { await GetWorkAsync(); } } GetWorkAsync()จะถือว่าคืนค่าTaskที่ไม่สามารถรอได้ซึ่งอาจหรือไม่อาจทำให้เกิดการสลับเธรดเมื่อดำเนินการต่อเนื่อง ฉันจะไม่สับสนถ้าการรอไม่ได้อยู่ในวง ฉันคาดหวังว่าส่วนที่เหลือของวิธี (เช่นความต่อเนื่อง) อาจจะดำเนินการในหัวข้ออื่นซึ่งเป็นเรื่องปกติ อย่างไรก็ตามในวงแนวคิดของ "ส่วนที่เหลือของวิธีการ" ทำให้ฉันมีหมอกเล็กน้อย จะเกิดอะไรขึ้นกับ "ส่วนที่เหลือของลูป" หากเธรดเปิดอยู่ต่อเนื่องกับหากไม่เปลี่ยน เธรดใดที่วนซ้ำครั้งถัดไปของลูปที่เรียกใช้งาน การสังเกตของฉันแสดง (ไม่ได้รับการตรวจสอบอย่างแน่ชัด) ว่าการวนซ้ำแต่ละครั้งเริ่มต้นในเธรดเดียวกัน (ฉบับดั้งเดิม) ในขณะที่การดำเนินการต่อเนื่องจะดำเนินการอีกครั้ง สิ่งนี้เป็นจริงได้ไหม ถ้าใช่นี่คือระดับของการขนานที่ไม่คาดคิดซึ่งจำเป็นต้องคำนึงถึงความปลอดภัยของเธรดแบบ vis-a-vis ของเมธอด GetWorkAsync หรือไม่? UPDATE: คำถามของฉันไม่เหมือนกันตามที่แนะนำโดยบางคน while (!_quit) { ... }รูปแบบรหัสเป็นเพียงความเรียบง่ายของรหัสที่เกิดขึ้นจริงของฉัน ในความเป็นจริงเธรดของฉันคือวนรอบที่ยาวนานซึ่งประมวลผลคิวอินพุตของไอเท็มงานในช่วงเวลาปกติ (ทุกๆ …
10 c#  loops  async 

1
Futures / Monads vs Events
ในกรอบแอปพลิเคชันเมื่อผลกระทบต่อประสิทธิภาพการทำงานสามารถถูกเพิกเฉยได้ (10-20 เหตุการณ์ต่อวินาทีสูงสุด) อะไรคือการบำรุงรักษาและความยืดหยุ่นในการใช้เป็นสื่อที่ต้องการสำหรับการสื่อสารระหว่างโมดูล - เหตุการณ์หรืออนาคต / สัญญา / Monads ? บ่อยครั้งที่มีการกล่าวกันว่ากิจกรรม (pub / sub, ผู้ไกล่เกลี่ย) อนุญาตให้มีเพศสัมพันธ์แบบหลวม ๆ - แอปที่บำรุงรักษาได้ดีกว่า ... ประสบการณ์ของฉันปฏิเสธสิ่งนี้: เมื่อคุณมีเหตุการณ์มากกว่า 20 เหตุการณ์ - การแก้ไขข้อบกพร่องกลายเป็นเรื่องยาก เพราะมันยากมากที่จะเห็น: ใครเมื่อไหร่และทำไมใช้อะไร สัญญา (ฉันกำลังเข้ารหัสใน Javascript) มีความน่าเกลียดและโง่กว่าเหตุการณ์มาก แต่: คุณสามารถเห็นการเชื่อมต่อระหว่างการเรียกใช้ฟังก์ชั่นได้อย่างชัดเจนดังนั้นตรรกะของแอปพลิเคชันจะกลายเป็นสิ่งที่ตรงไปตรงมามากขึ้น สิ่งที่ฉันกลัว แม้ว่าจะเป็นสัญญาที่จะนำการแต่งงานที่ยากขึ้นกับพวกเขา ... ป.ล. : คำตอบไม่จำเป็นต้องอิงจาก JS ประสบการณ์จากภาษาอื่น ๆ ที่ใช้งานได้ดี

1
เบลอเส้นระหว่างแอซิงก์และฟังก์ชั่นปกติใน C # 5.0
เมื่อเร็ว ๆ นี้ดูเหมือนว่าฉันจะไม่สามารถรับรูปแบบasync-await ที่น่าทึ่งของ C # 5.0 ได้ คุณอยู่ที่ไหนตลอดชีวิตของฉัน ฉันตื่นเต้นอย่างมากกับไวยากรณ์ที่เรียบง่าย แต่ฉันมีปัญหาเล็กน้อย ปัญหาของฉันคือฟังก์ชั่น async มีการประกาศที่แตกต่างกันโดยสิ้นเชิงจากฟังก์ชั่นปกติ เนื่องจากมีเพียง async เท่านั้นที่สามารถรอฟังก์ชั่นอื่น ๆ ของ async ได้เมื่อฉันพยายามที่จะแปลงรหัสการบล็อกเก่า ๆ ให้เป็น async ฉันจึงมีผลกระทบโดมิโนของฟังก์ชั่นที่ฉันต้องแปลง คนได้รับการอ้างถึงนี้เป็นทำลายผีดิบ เมื่อ async เริ่มกัดรหัสของคุณมันก็จะยิ่งใหญ่ขึ้นเรื่อย ๆ กระบวนการ porting ไม่ยากมันเป็นเพียงแค่การขว้างปาในการประกาศและการตัดค่าตอบแทนด้วยasync Task<>แต่มันเป็นเรื่องที่น่ารำคาญที่จะทำเช่นนี้ซ้ำแล้วซ้ำอีกเมื่อทำการพอร์ตรหัสซิงโครนัสเก่า ดูเหมือนว่าฉันจะเป็นธรรมชาติมากขึ้นถ้าทั้งสองประเภทฟังก์ชั่น (async และซิงค์เก่าธรรมดา) มีไวยากรณ์เดียวกันแน่นอน หากเป็นกรณีนี้การย้ายจะใช้ความพยายามเป็นศูนย์และฉันสามารถสลับระหว่างสองรูปแบบได้อย่างไม่ลำบาก ฉันคิดว่าสิ่งนี้สามารถใช้งานได้หากเราปฏิบัติตามกฎเหล่านี้: ฟังก์ชัน Async ไม่จำเป็นต้องมีการasyncประกาศอีกต่อไป Task<>ประเภทการกลับมาของพวกเขาจะได้ไม่ต้องถูกห่อใน คอมไพเลอร์จะระบุฟังก์ชั่น async ระหว่างการคอมไพล์ด้วยตัวเองและทำการตัดคำสั่งงาน <> โดยอัตโนมัติตามต้องการ ไม่มีการเรียกและฟังก์ชั่น …

1
การออกแบบอินเตอร์เฟสและ async
สมมติว่าฉันได้สร้างส่วนต่อประสานที่IFolderRepositoryมีวิธีการดังนี้: IEnumerable<Folder> GetAllFolders(); Folder GetFolderWithId(int id); void AddFolder(Folder newFolder); void ModifyFolder(Folder folderToModify, Folder folderAfterModification); void RemoveFolder(Folder folderToRemove); และฉันได้ดำเนินการและช่วยให้พูดDatabaseFolderRepository CacheFolderRepositoryDecoratorตอนนี้หลายร้อยสายต่อมา 'ผมอยากจะเพิ่ม SkyDrive โฟลเดอร์ functionallity SkyDriveFolderRepositoryดังนั้นฉันพร้อมที่จะเพิ่ม แต่น่าเสียดายที่ในขณะที่DatabaseFolderRepositoryการดำเนินการใช้วิธีการซิงโครที่จะพูดคุยกับฐานข้อมูล, SkyDrive หนึ่งใช้จำนวนมากและasync awaitจะทำอย่างไรในกรณีเช่นนี้? ในกรณีที่วิธีการทำเครื่องหมายเป็นโมฆะทำเครื่องหมายว่า async ไม่ใช่วิธีการแก้ปัญหา (จำเป็นต้องยกเว้นการจัดการ) ฉันควรเปลี่ยนอินเทอร์เฟซเพื่อส่งคืนTask<T>หรือไม่ แน่ใจว่ามันจะทำงานในตัวอย่างข้างต้น แต่พวกเขาเป็นเพียง 2 ชั้นเรียนการใช้งานอินเตอร์เฟซ หรืออินเทอร์เฟซส่วนใหญ่ของฉันควรมีTaskประเภทการส่งคืน (คุณไม่ต้องการกฎ)
9 c#  async 

3
การเลือก JavaScript Asynch-Loader [ปิด]
ปิด. คำถามนี้เป็นคำถามปิดหัวข้อ ไม่ยอมรับคำตอบในขณะนี้ ต้องการปรับปรุงคำถามนี้หรือไม่ อัปเดตคำถามเพื่อให้เป็นหัวข้อสำหรับ Software Engineering Stack Exchange ปิดให้บริการใน5 ปีที่ผ่านมา ฉันดูที่ตัวจัดการทรัพยากรแบบอะซิงโครนัสต่าง ๆ แล้วและฉันก็ไม่แน่ใจว่าจะใช้อันไหน ฉันทำงานที่ไหนเรามีความพยายามที่แตกต่างกันในกลุ่มซึ่งโมดูลคลาสอาจใช้ jQuery รุ่นต่างๆ (ฯลฯ ) ดังนั้นการอ้างอิงที่ซ้อนกันอาจแตกต่างกันเช่นกัน ฉันไม่สามารถควบคุมสิ่งนี้ได้ดังนั้นนี่หมายความว่าฉันต้องโหลดทรัพยากรแบบไดนามิกซึ่งอาจใช้เวอร์ชันอื่นของไลบรารีเดียวกัน เช่นนี้นี่คือข้อกำหนดของฉัน: โหลดไฟล์ทรัพยากร JavaScript และ CSS แบบอะซิงโครนัส จัดการการพึ่งพาการสั่งซื้อและการพึ่งพาซ้อนกันข้ามรุ่น ตรวจสอบว่ามีการโหลดทรัพยากรอยู่แล้ว ต้องอนุญาตสำหรับการโหลดข้ามโดเมน (CDN's) (ไม่บังคับ) อนุญาตให้เรายกเลิกการโหลดทรัพยากร ฉันเคยดู: Curl RequireJS JavaScriptMVC LABjs ฉันอาจสามารถปลอมข้อกำหนดเหล่านี้ด้วยตนเองโดยการโหลดเวอร์ชันลงในตัวแปรที่ถูกเนมสเปซอย่างถูกต้องและใช้อาร์เรย์เพื่อติดตามสิ่งที่โหลดไปแล้ว ... แต่หวังว่าจะมีคนคิดค้นสิ่งนี้ขึ้นมา ดังนั้นคำถามของฉันคือ: คุณใช้อันไหน และทำไม? มีคนอื่นที่ตรงกับความต้องการของฉันอย่างเต็มที่หรือไม่ ท่านใดที่มีคารมคมคายมากที่สุดและใช้งานได้ง่ายที่สุด และทำไม? ปรับปรุง: สำหรับผู้ที่สนใจฉันลองห้องสมุด AMD …
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.