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

สิ่งนี้ครอบคลุมรูปแบบการเขียนโปรแกรมแบบอะซิงโครนัสที่รองรับโดยภาษาการเขียนโปรแกรมต่างๆโดยใช้ async และรอคำสำคัญ

6
มี async ใด ๆ เทียบเท่ากับ Process.Start?
เช่นเดียวกับชื่อเรื่องที่แนะนำมีความเทียบเท่าProcess.Start(อนุญาตให้คุณเรียกใช้แอพพลิเคชั่นหรือไฟล์แบตช์) ที่ฉันรอได้ไหม ฉันกำลังเล่นกับแอปคอนโซลขนาดเล็กและดูเหมือนว่าเป็นสถานที่ที่เหมาะที่จะใช้ async และรออยู่ แต่ฉันไม่พบเอกสารใด ๆ สำหรับสถานการณ์นี้ สิ่งที่ฉันคิดคือบางสิ่งบางอย่างตามบรรทัดเหล่านี้: void async RunCommand() { var result = await Process.RunAsync("command to run"); }
141 c#  async-await  c#-5.0 

5
ด้านหน้าขนานกับแลมด้าแบบอะซิงโครนัส
ฉันต้องการจัดการคอลเลคชันควบคู่กันไป แต่ฉันประสบปัญหาในการใช้งานจึงหวังว่าจะได้รับความช่วยเหลือ ปัญหาเกิดขึ้นถ้าฉันต้องการเรียกวิธีการที่ทำเครื่องหมาย async ใน C # ภายในแลมบ์ดาของลูปขนาน ตัวอย่างเช่น: var bag = new ConcurrentBag<object>(); Parallel.ForEach(myCollection, async item => { // some pre stuff var response = await GetData(item); bag.Add(response); // some post stuff } var count = bag.Count; ปัญหาเกิดขึ้นกับการนับเป็น 0 เนื่องจากเธรดทั้งหมดที่สร้างขึ้นมีประสิทธิภาพเป็นเพียงเธรดพื้นหลังและการParallel.ForEachโทรไม่รอให้เสร็จสิ้น หากฉันลบคีย์เวิร์ด async วิธีการจะมีลักษณะดังนี้: var bag = new ConcurrentBag<object>(); Parallel.ForEach(myCollection, …

2
การดำเนินการ async Framework Entity ใช้เวลาสิบเท่าในการดำเนินการให้เสร็จสมบูรณ์
ฉันมีไซต์ MVC ที่ใช้ Entity Framework 6 เพื่อจัดการฐานข้อมูลและฉันได้ทำการทดลองกับการเปลี่ยนแปลงเพื่อให้ทุกอย่างทำงานเป็นตัวควบคุม async และการเรียกไปยังฐานข้อมูลนั้นจะทำงานเหมือน async counterparts (เช่น ToListAsync () แทน ToList ()) ปัญหาที่ฉันมีคือเพียงแค่เปลี่ยนการสืบค้นของฉันเป็น async ทำให้พวกเขาช้าอย่างไม่น่าเชื่อ รหัสต่อไปนี้จะได้รับการรวบรวมวัตถุ "Album" จากบริบทข้อมูลของฉันและถูกแปลเป็นฐานข้อมูลที่ค่อนข้างง่าย: // Get the albums var albums = await this.context.Albums .Where(x => x.Artist.ID == artist.ID) .ToListAsync(); นี่คือ SQL ที่สร้างขึ้น: exec sp_executesql N'SELECT [Extent1].[ID] AS [ID], [Extent1].[URL] AS [URL], …

1
วิธีการรับ Thread.Sleep รอ?
ฉันกำลังเขียนแอปพลิเคชันที่เชื่อมโยงเครือข่ายโดยยึดตามกระบวนทัศน์ที่รอคอย / การนอนหลับ บางครั้งเกิดข้อผิดพลาดในการเชื่อมต่อและจากประสบการณ์ของฉันมันจ่ายเพื่อรอเวลาแล้วลองอีกครั้ง ปัญหาคือว่าถ้าฉันใช้ Thread.Sleep หรือการดำเนินการปิดกั้นที่คล้ายกันอื่นในการรอคอย / async จะบล็อกกิจกรรมทั้งหมดในเธรดผู้โทร สิ่งที่ฉันควรแทนที่ Thread.Sleep (10,000) ด้วยเพื่อให้ได้ผลเช่นเดียวกับ await Thread.SleepAsync(10000) ? UPDATE ฉันต้องการคำตอบที่ทำได้โดยไม่ต้องสร้างกระทู้เพิ่มเติม

7
จะรอให้วิธีการ async เสร็จสมบูรณ์ได้อย่างไร
ฉันกำลังเขียนแอปพลิเคชัน WinForms ที่ถ่ายโอนข้อมูลไปยังอุปกรณ์ USB HID class ใบสมัครของฉันใช้ที่ดีเยี่ยม v6.0 ห้องสมุดทั่วไป HID ซึ่งสามารถพบได้ที่นี่ โดยสรุปเมื่อฉันต้องการเขียนข้อมูลไปยังอุปกรณ์นี่คือรหัสที่ถูกเรียก: private async void RequestToSendOutputReport(List<byte[]> byteArrays) { foreach (byte[] b in byteArrays) { while (condition) { // we'll typically execute this code many times until the condition is no longer met Task t = SendOutputReportViaInterruptTransfer(); await t; } // …

5
ใช้ async-await บน. net 4
ขณะนี้ฉันเริ่มสร้างแอปพลิเคชันที่จะได้รับประโยชน์มากมายจากคุณลักษณะ async ที่รอคอยของ C # 5 แต่ฉันไม่แน่ใจว่าเวอร์ชัน VS และรันไทม์ async ที่จะใช้ เมื่อดูที่ชาร์ตยอดนิยมของ OS ฉันจะต้องรองรับ Windows XP อีกสามปี ดูเหมือนว่า. net 4.5 จะทำงานบน Windows รุ่นใหม่กว่าเท่านั้นดังนั้นฉันต้องกำหนดเป้าหมาย. net 4.0 เครื่องพัฒนาใช้ Windows 7 ดังนั้นการใช้ VS เวอร์ชันที่ใหม่กว่าจึงไม่ใช่ปัญหา ตอนนี้ฉันต้องเลือกคอมไพเลอร์ก่อนเพื่อทำสิ่งนี้: VS2010 พร้อม AsyncCTP ดูตัวอย่าง VS2012 (และสุดท้ายเมื่อมาถึง) ตั้งค่าเป้าหมายเป็น. net 4.0 Mono (ดูเหมือนว่า 2.12 มี async-await, ฉันชอบ / ฉันคุ้นเคยกับ VS …

2
คุณใช้วิธีการมอบหมายการดำเนินการ async อย่างไร
ข้อมูลพื้นฐานเล็กน้อย ฉันกำลังเรียนรู้ Web API stack และฉันกำลังพยายามห่อหุ้มข้อมูลทั้งหมดในรูปแบบของออบเจ็กต์ "Result" ด้วยพารามิเตอร์เช่น Success และ ErrorCodes อย่างไรก็ตามวิธีการที่แตกต่างกันจะให้ผลลัพธ์และรหัสข้อผิดพลาดที่แตกต่างกัน แต่โดยทั่วไปวัตถุผลลัพธ์จะถูกสร้างอินสแตนซ์ในลักษณะเดียวกัน เพื่อประหยัดเวลาและเรียนรู้เพิ่มเติมเกี่ยวกับความสามารถ async / await ใน C # ฉันพยายามที่จะรวมเนื้อหาวิธีการทั้งหมดของการกระทำเว็บ api ของฉันในตัวแทนการกระทำแบบอะซิงโครนัส แต่ติดอยู่ในอุปสรรคเล็กน้อย ... ให้ชั้นเรียนต่อไปนี้: public class Result { public bool Success { get; set; } public List<int> ErrorCodes{ get; set; } } public async Task<Result> GetResultAsync() { return …

5
async รองานส่งคืน
ใครสามารถอธิบายความหมายของวิธีการซิงโครนัสได้บ้าง ถ้าลองเปลี่ยนวิธีเป็นasyncVS ก็บ่นไปเลย ใช้งานได้: public Task MethodName() { return Task.FromResult<object>(null); } สิ่งนี้ใช้ไม่ได้: public async Task MethodName() { return Task.FromResult<object>(null); } โดยพื้นฐานแล้วฉันต้องการทราบว่านี่หมายถึงอะไร: Task.FromResult<object>(null);

3
async HttpClient จาก. Net 4.5 เป็นตัวเลือกที่ไม่ดีสำหรับแอปพลิเคชันที่มีภาระงานมากหรือไม่?
ฉันเพิ่งสร้างแอปพลิเคชันง่ายๆสำหรับทดสอบปริมาณงานการโทร HTTP ที่สามารถสร้างในลักษณะอะซิงโครนัสเทียบกับวิธีการแบบมัลติเธรดแบบเดิม แอปพลิเคชันสามารถทำการโทร HTTP ตามจำนวนที่กำหนดไว้ล่วงหน้าและในตอนท้ายจะแสดงเวลาทั้งหมดที่จำเป็นในการดำเนินการ ในระหว่างการทดสอบของฉันมีการเรียก HTTP ทั้งหมดไปยังเซิร์ฟเวอร์ IIS ในเครื่องของฉันและพวกเขาดึงไฟล์ข้อความขนาดเล็ก (ขนาด 12 ไบต์) ส่วนที่สำคัญที่สุดของโค้ดสำหรับการใช้งานแบบอะซิงโครนัสแสดงอยู่ด้านล่าง: public async void TestAsync() { this.TestInit(); HttpClient httpClient = new HttpClient(); for (int i = 0; i < NUMBER_OF_REQUESTS; i++) { ProcessUrlAsync(httpClient); } } private async void ProcessUrlAsync(HttpClient httpClient) { HttpResponseMessage httpResponse = null; try …

10
การใช้ระบบไฟล์ใน node.js ด้วย async / await
ฉันต้องการใช้ async / await กับการทำงานของระบบไฟล์บางอย่าง โดยปกติ async / await ทำงานได้ดีเพราะฉันใช้babel-plugin-syntax-async-functionsไฟล์. แต่ด้วยรหัสนี้ฉันพบใน if case ที่namesไม่ได้กำหนด: import fs from 'fs'; async function myF() { let names; try { names = await fs.readdir('path/to/dir'); } catch (e) { console.log('e', e); } if (names === undefined) { console.log('undefined'); } else { console.log('First Name', names[0]); } …

5
เหตุใดฉันจึงควรเลือก 'await Task whenAll' มากกว่าการรอหลายครั้ง
ในกรณีที่ฉันไม่สนใจลำดับการทำงานให้เสร็จและเพียงแค่ต้องการให้ทุกอย่างเสร็จสมบูรณ์ฉันควรใช้await Task.WhenAllแทนหลาย ๆ ตัวawaitหรือไม่ เช่นDoWork2ด้านล่างเป็นวิธีที่ต้องการDoWork1(และทำไม?): using System; using System.Threading.Tasks; namespace ConsoleApp { class Program { static async Task<string> DoTaskAsync(string name, int timeout) { var start = DateTime.Now; Console.WriteLine("Enter {0}, {1}", name, timeout); await Task.Delay(timeout); Console.WriteLine("Exit {0}, {1}", name, (DateTime.Now - start).TotalMilliseconds); return name; } static async Task DoWork1() { var …

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<bool> CheckStatus() { var restClient = …
126 c#  nunit  task  deadlock  async-await 

7
ฉันจะใช้ Async กับ ForEach ได้อย่างไร?
เป็นไปได้ไหมที่จะใช้ Async เมื่อใช้ ForEach ด้านล่างนี้คือรหัสที่ฉันกำลังพยายาม: using (DataContext db = new DataLayer.DataContext()) { db.Groups.ToList().ForEach(i => async { await GetAdminsFromGroup(i.Gid); }); } ฉันได้รับข้อผิดพลาด: ไม่มีชื่อ 'Async' ในบริบทปัจจุบัน วิธีการที่ใช้คำสั่งอยู่ในนั้นถูกตั้งค่าเป็น async
123 c#  async-await 

8
SyntaxError: ฟังก์ชันโทเค็นที่ไม่คาดคิด - Async Await Nodejs
ฉันกำลังทดลองใช้ Node เวอร์ชัน6.2.1กับโค้ดบางส่วนของฉัน มีแผนที่จะย้ายรหัสที่เน้นการโทรกลับแบบไฮเปอร์ส่วนใหญ่ไปยังสิ่งที่ดูสะอาดกว่าและอาจทำงานได้ดีกว่า ฉันไม่รู้ว่าทำไมเทอร์มินัลแสดงข้อผิดพลาดเมื่อฉันพยายามรันโค้ดโหนด helloz.js (async function testingAsyncAwait() { await console.log("Print me!"); })(); Logs- BOZZMOB-M-T0HZ:rest bozzmob$ node helloz.js /Users/bozzmob/Documents/work/nextgennms/rest/helloz.js:1 (function (exports, require, module, __filename, __dirname) { (async function testingAsyncAwait() { ^^^^^^^^ SyntaxError: Unexpected token function at Object.exports.runInThisContext (vm.js:53:16) at Module._compile (module.js:513:28) at Object.Module._extensions..js (module.js:550:10) at Module.load (module.js:458:32) at tryModuleLoad …

3
ข้อดีของการใช้ async กับ MVC5 คืออะไร?
อะไรคือความแตกต่างระหว่าง: public ActionResult Login(LoginViewModel model, string returnUrl) { if (ModelState.IsValid) { IdentityResult result = IdentityManager.Authentication.CheckPasswordAndSignIn(AuthenticationManager, model.UserName, model.Password, model.RememberMe); if (result.Success) { return Redirect("~/home"); } else { AddErrors(result); } } return View(model); } และ: [HttpPost] [AllowAnonymous] [ValidateAntiForgeryToken] public async Task<ActionResult> Login(LoginViewModel model, string returnUrl) { if (ModelState.IsValid) { IdentityResult result = …

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