ОБНОВЛЕНИЕ objective этого вопроса – получить простой ответ о Task.Run() и тупиковой ситуации. Я очень понимаю теоретические рассуждения о том, что вы не смешиваете асинхронные и синхронизирующие сигналы, и я принимаю их близко к сердцу. Я не выше изучения новых вещей от других; Я стараюсь делать это, когда смогу. Есть только времена, когда всем нужен […]
Каким будет лучший способ конвертировать / переносить «classический» asynchronous метод, который использует обратный вызов для чего-то, что возвращает (ожидаемую) задачу? Например, учитывая следующий метод: public void GetStringFromUrl(string url, Action onCompleted); Единственный способ, которым я знаю, превратить это в метод, возвращающий задачу: public Task GetStringFromUrl(string url) { var t = new TaskCompletionSource(); GetStringFromUrl(url, s => t.TrySetResult(s)); […]
Попытка понять разницу между TPL и async / await когда дело доходит до создания streamов. Я считаю, что TPL ( TaskFactory.StartNew ) работает аналогично ThreadPool.QueueUserWorkItem в том, что он приостанавливает работу над streamом в пуле streamов. Это, конечно, если вы не используете TaskCreationOptions.LongRunning который создает новый stream. Я думал, что async / await будет работать […]
У меня есть приложение для сообщений о телефонии, в котором есть много сообщений, которые нужно обрабатывать. Поскольку телефонные порты ограничены, сообщение сначала будет обработано первым. Каждое сообщение имеет флаг «Подтверждение», который указывает, какая из обработанных. Конечно, он был инициализирован как ложный. Я хочу поместить все сообщения в очередь, затем обработать их несколькими streamами или задачами. […]
Каков правильный способ отменить следующее? var tcpListener = new TcpListener(connection); tcpListener.Start(); var client = await tcpListener.AcceptTcpClientAsync(); Просто вызов tcpListener.Stop() похоже, приводит ObjectDisposedException AcceptTcpClientAsync метод AcceptTcpClientAsync не принимает структуру CancellationToken . Неужели я совершенно ничего не вижу?
Существует ли рекомендованный шаблон для самостоятельной отмены и перезапуска задач? Например, я работаю над API для проверки орфографии. Сеанс проверки орфографии завершается как Task . Каждый новый сеанс должен отменить предыдущий и дождаться его завершения (чтобы правильно использовать ресурсы, такие как поставщик услуг проверки орфографии и т. Д.). Я придумал что-то вроде этого: class Spellchecker […]
При просмотре различных образцов C # Async CTP я вижу некоторые функции async, которые возвращают void , и другие, которые возвращают не-общую Task . Я вижу, почему возrotation Task полезно возвращать данные вызывающему, когда операция async завершается, но функции, которые я видел, которые возвращают тип Task никогда не возвращают какие-либо данные. Почему бы не вернуть […]
Вот код WinForms: async void Form1_Load(object sender, EventArgs e) { // on the UI thread Debug.WriteLine(new { where = “before”, Thread.CurrentThread.ManagedThreadId, Thread.CurrentThread.IsThreadPoolThread }); var tcs = new TaskCompletionSource(); this.BeginInvoke(new MethodInvoker(() => tcs.SetResult(true))); await tcs.Task.ContinueWith(t => { // still on the UI thread Debug.WriteLine(new { where = “ContinueWith”, Thread.CurrentThread.ManagedThreadId, Thread.CurrentThread.IsThreadPoolThread }); }, TaskContinuationOptions.ExecuteSynchronously).ConfigureAwait(false); // on a […]
У меня есть следующий сценарий, который, я думаю, может быть довольно распространенным: Существует задача (обработчик команд UI), которая может выполняться синхронно или асинхронно. Команды могут поступать быстрее, чем они обрабатываются. Если для команды уже есть ожидающая задача, задача нового обработчика команд должна быть поставлена в очередь и обрабатываться последовательно. Результат каждой новой задачи может зависеть […]
Хорошо, так что в основном у меня есть множество задач (10), и я хочу начать их все в одно и то же время и дождаться их завершения. По завершении я хочу выполнить другие задачи. Я прочитал кучу ресурсов об этом, но я не могу понять это в своем конкретном случае … Вот что я сейчас […]