2011-02-06 6 views
2

У меня есть некоторые сомнения относительно дизайна предстоящей функции async/await C#.C# async ожидание реализации

  1. Удобство крепления нового механизма Task<T>
  2. Я думаю, что лучше использовать асинхронный подставляя AWAIT ключевого слова. Для увеличения: var result = async GetResultAsync();
  3. Механизм отмены текущей асинхронной операции с использованием маркера не так изящен, насколько мне кажется.

Async/away - отличная возможность, но я думаю, что это не так хорошо, как LINQ. Кроме того, я чувствую, что команда разработчиков опасно довольна нынешним дизайном; и, возможно, не учитывать учетную информацию сообщества.

Как вы думаете?

+0

Голосование для повторного открытия после ответа Эрика. Здесь проблема императора и одежды, вопрос неудобен, но реальный. –

+0

Ханс Пассант, я высоко ценю вашу поддержку. Но, к сожалению, я не Эрик Липперт. – Masterile

ответ

6

Асинхронный/гости отличная возможность, но я думаю, что это не так хорошо разработан как LINQ.

Какие аспекты процесса проектирования вы считаете недостаточными по сравнению с процессом проектирования для LINQ?

Кроме того, я чувствую, что команда дизайнеров опасно довольна нынешним дизайном; и, возможно, не учитывать учетную информацию сообщества.

Что вы создадите такое впечатление? Некоторое время назад мы приглашаем к обратной связи с сообществом. Это не игнорируется.

Что вы думаете?

Я думаю, что это вопрос для обсуждения, а не технический вопрос. Вы уверены, что это подходящий сайт для этого вопроса?

+2

Не совсем подходящий сайт для этого ответа? Ответ инженера хорошо подойдет. Я лично считаю, что CancellationToken сильно игнорируется в большинстве случаев, которые я видел. Установка этого колеса в движение и поддержание ваших пальцев, скрещенных за спиной, что он достигнет хорошего конца, - это 90% реальных проблем с асинхронным кодом. Но да, трудно представить, что-ifs на отличной альтернативе явным государственным машинам. Это все еще блестяще. Мне бы понравилось сообщение в блоге о том, как использовать функцию async * без * CancellationToken в реальном коде. Думайте о форме или окне. –

+0

Эрик, спасибо за ваш ответ. Последний вопрос был связан с конкретными 3 пунктами, которые я упоминаю. – Masterile

+0

Мне нравится C# becouse Я считаю, что это очень хорошо продуманный язык программирования. Из-за этого я больше всего надеюсь на команду C#. Я упоминаю несколько конкретных технических моментов, которые, по-видимому, очень аргументированы. Мне смешно, но я считаю ваше мнение. Пользователи StackOverflow имеют право подвергать цензуре такой «субъективный» вопрос, это его собственное право. Но я очень разочарован этим. – Masterile

7

Эти дизайнерские решения имеют тенденцию иметь мало смысла, пока вы не попытались сделать эту работу самостоятельно. Ваше задание: напишите асинхронный код и остановите его, когда захотите. Ваши ограничения: вы не можете использовать Thread.Abort() и никогда не сможете вызвать тупик.

4
  1. Они уже вложили много работы в Task и Task<T>, который разработан, чтобы полностью соответствовать этой ситуации. Я считаю, что это очень удобно, потому что я точно знаю, чего ожидать от задачи - если раньше она использовалась, и я думаю, что многие другие разработчики тоже будут чувствовать это. На мой взгляд, это намного лучше, чем введение чего-то нового - и я даже не уверен, что может быть другим, что сделает новый тип более подходящим для этой задачи. У вас есть какие-то конкретные идеи?

  2. Я думаю, что вам не хватает ключевого слова async. Он используется для обозначения методов, которые будут (частично) выполняться асинхронно (при использовании ключевого слова await). Требуется, чтобы компилятор знал, какие методы «совершают магию»; он не «конвертирует» метод, который должен выполняться асинхронно. Для этого вы должны использовать ThreadPool.QueueUserWorkItem.

  3. Я не могу прокомментировать это. На ваш взгляд, было бы более элегантным решением? Я уверен, что Microsoft учтет ваши отзывы, если вы поделитесь ими с ними.

+0

Я использую одно и то же ключевое слово (асинхронное) в обоих местах, в подписи и в теле метода. – Masterile

+0

Решение об отмене может быть чем-то похожее на неявное списание F #. – Masterile

Смежные вопросы