Асинхронный метод в C # может возвращать void
, Task
или Task<T>
, где вообще следует избегать void
, потому что его нельзя ожидать.
Как правило, асинхронные методы должны называться DoSomethingAsync()
Ключевое слово async
, однако, является подробностью реализации и не относится к API. Это ключевое слово требуется только в том случае, если вы используете await
в теле метода. Но это не обязательно так. Вы можете просто делегировать другому асинхронному методу, без необходимости помечать метод как async
и использовать await
. ] метод.
В примере он сделал метод синхронно, поставив .Result
в конце GetStringAsync
Объяснение Erlang (видео) или (слайды); хороший источник информации, как исходный код для user.erl.
Короче говоря:
{io_request, From, ReplyAs, Request}
%From is the process to send the reply to,
%ReplyAs is any term the caller desires to
%match up the request and the response. (returned verbatim in the reply)
{io_reply, ReplyAs, Reply}
Некоторые запросы в user.erl:
{put_chars, IoList} % puts the iolist
{put_chars, M,F,A} % puts the result of apply(M,F,A)
{get_geometry, 'rows' | 'columns'} % returns the number of rows or columns of the console
{get_line, Prompt} % calls io_lib:collect_line(Prompt)
{get_chars, Prompt, Mod, Func, ExtraArgs}
{get_until, Prompt, Mod, Func, Args}
{setopts, Options} % only option supported by user is 'binary'
% (binary mode if present in Options, list mode otherwise)