У меня есть метод async: public async Task ValidateRequestAsync(string userName, string password) { using (HttpClient client = new HttpClient()) { HttpResponseMessage response = await client.GetAsync(url); string stringResponse = await response.Content.ReadAsStringAsync(); return bool.Parse(stringResponse); } } Я вызываю этот метод следующим образом: bool isValid = await ValidateRequestAsync(“user1”, “pass1”); Могу ли я вызвать тот же метод из синхронного […]
Мне интересно, существует ли реализация / wrapper для ConcurrentQueue , аналогичная BlockingCollection, где сбор из коллекции не блокируется, а вместо этого является асинхронным и вызывает асинхронное ожидание, пока элемент не будет помещен в очередь. Я придумал свою собственную реализацию, но, похоже, она не работает так, как ожидалось. Мне интересно, если я изобретаю то, что уже […]
Я использую шаблон async / await в .NET 4.5 для реализации некоторых методов обслуживания в WCF. Пример сервиса: Контракт: [ServiceContract(Namespace = “http://async.test/”)] public interface IAsyncTest { Task DoSomethingAsync(); } Реализация: MyAsyncService : IAsyncTest { public async Task DoSomethingAsync() { var context = OperationContext.Current; // context is present await Task.Delay(10); context = OperationContext.Current; // context is […]
Я пытаюсь понять, почему и когда следует использовать действие async controllerа. В конце концов, когда я буду использовать его, он будет ждать завершения операции, чтобы вернуть View. Например public async Task TryMe() { await SomeActionAsync(); return View(); } В этом случае, если я использую async или не использую async , действие будет выполняться в одно […]
Я хотел бы await результата BlockingCollection.Take() асинхронно, поэтому я не блокирую stream. Ищете что-нибудь вроде этого: var item = await blockingCollection.TakeAsync(); Я знаю, что могу это сделать: var item = await Task.Run(() => blockingCollection.Take()); но этот вид убивает всю идею, потому что вместо этого блокируется другой stream ( ThreadPool ). Есть ли альтернатива?
ОБНОВЛЕНИЕ objective этого вопроса – получить простой ответ о Task.Run() и тупиковой ситуации. Я очень понимаю теоретические рассуждения о том, что вы не смешиваете асинхронные и синхронизирующие сигналы, и я принимаю их близко к сердцу. Я не выше изучения новых вещей от других; Я стараюсь делать это, когда смогу. Есть только времена, когда всем нужен […]
Я рассматривал новый asynchronous материал на C # 5, и появился один конкретный вопрос. Я понимаю, что ключевое слово await является аккуратным трюком компилятора / синтаксическим сахаром для реализации продолжения передачи , где оставшаяся часть метода разбивается на объекты Task и выполняется в очереди, чтобы запускаться по порядку, но где элемент управления возвращается вызывающему методу […]
Попытка понять разницу между TPL и async / await когда дело доходит до создания streamов. Я считаю, что TPL ( TaskFactory.StartNew ) работает аналогично ThreadPool.QueueUserWorkItem в том, что он приостанавливает работу над streamом в пуле streamов. Это, конечно, если вы не используете TaskCreationOptions.LongRunning который создает новый stream. Я думал, что async / await будет работать […]
Я использую Async CTP для написания приложения IO heavy console. Но у меня проблемы с исключениями. public static void Main() { while (true) { try{ myobj.DoSomething(null); } catch(Exception){} Console.Write(“done”); //… } } //… public async void DoSomething(string p) { if (p==null) throw new InvalidOperationException(); else await SomeAsyncMethod(); } И происходит следующее: «done» записывается в консоль, […]
Есть ли разница между приведенными ниже методами? Предпочтительно ли другое? public static async Task SendAsync1(string to, string subject, string htmlBody) { // … await smtp.SendMailAsync(message); // No return statement } public static Task SendAsync2(string to, string subject, string htmlBody) { // … return smtp.SendMailAsync(message); } Этот метод будет вызываться из методов controllerа MVC; например: public […]