6

async-awaitパターンは、.NET 4.5 および C# 5.0 に追加された強力な機能の 1 つです。

現在、私の知る限り、C# と VB でのみ利用できます。

この API は .NET CLR の機能ですか、それとも C# コンパイラ自体の機能ですか?

私が本当に求めているのはこれです-次のような他の.NET言語で非同期/待機を期待する必要があります:

  • C++ (C++/CLI 経由)
  • Python (IronPython 経由)
  • PHP (Phalanger 経由)
  • JavaScript (IronJS 経由)

非同期プログラミング全般について質問しているのではなく、async-await パターン (同期的に記述された非同期コード) の詳細について質問していることに注意してください

4

4 に答える 4

7

この API は .NET CLR の機能ですか、それとも C# コンパイラ自体の機能ですか?

これはコンパイラの機能です。asyncとをサポートするために必要な CLR の変更はありませんでしたawait。それをサポートするには、他の言語を拡張する必要があります。コンパイラがこれを行うのを妨げるものは何もありませんが、コンパイラと言語自体で変更する必要があります。

C++ は、C# や VBの/キーワードほどには使用できませんが、/を介して Windows ストア アプリケーションで非同期性をサポートしています。taskthenasyncawait

現在、私が知る限り、C# と VB でのみ利用できます。

F# もasyncサポートされていることに注意してください (これは、C# および VB.Net バージョンよりもかなり前のものです)。これは C# スタイルの非同期サポートとは異なりますが、似ています (そして、C# および VB.Net チームに影響を与えました)。

于 2013-08-28T17:53:32.653 に答える
2

C# および VB.Net コンパイラはawait、元のメソッドをステート マシンに変換することによってパターンを実装します。これは、F# の async / ワークフロー パターンがどのように機能するかということと非常によく似ています。このタイプの変換は、CLR を対象とするすべての言語で可能です。

于 2013-08-28T17:53:53.293 に答える
0

Visual C++ Compiler November 2013 CTPを調べると、 次のようなことを行ういくつかの気の利いた例があります。

これはまだ見栄えがよくありませんが、将来のバージョンでは、これを行うための標準的な進化した新しい (少なくとも標準的な) 方法が登場する可能性があります。

于 2014-07-23T13:27:22.880 に答える