この記事は機械翻訳のミラー記事です。元の記事にジャンプするにはこちらをクリックしてください。

眺める: 31433|答える: 5

[出典] .net/c# async/await を持つタスククラス

[リンクをコピー]
掲載地 2017/10/20 22:32:17 | | |
タスククラス

Taskクラスは.NET 4.0以降に提供された非同期演算抽象化で、System.Threading.Tasks.Taskへの完全なパスを持っています。

タスククラスはリターン値のない非同期操作を表すために使われ、リターン値のある非同期操作にはタスククラスのサブクラスTaskを用いるべきです<TResult>。
タスククラスによって作成されたタスクはスレッドプールに追加されます。

<TResult>タスク/タスククラスの主な構成要素は以下の通りです。


作成後、Start()メソッドを使ってタスクを開始できます:


実際の開発では、タスククラスの静的メソッドRun()やファクトリークラスTaskFactoryのメンバーメソッドStartNew()が新しいタスクの作成や開始によく使われます。

タスククラスでよく見られる手法のいくつか:


async/await キーワード

C# 5.0は非同期およびawaitキーワードを導入し、言語レベルでの並行処理をより良くサポートしました。

非同期は以下の方法で非同期メソッドをマークするために使われます:
非同期キーワードはコンテキストキーワードであり、メソッドとラムダを修正した場合にのみキーワードとして扱われ、他の領域では識別子として扱われます。
非同期キーワードは静的メソッドをマークできますが、エントリポイント(Main()メソッド)はマークできません。
asyncでタグ付けされたメソッドのリターン値は<TResult>、Task、Task、またはvoidのいずれかでなければなりません。
awaitは非同期手法の結果を待つために使われます:
awaitキーワードも同様に文脈キーワードであり、非同期タグ付けメソッドでのみキーワードとして扱われます。
awaitキーワードは非同期メソッドの前に使用でき、Taskは非<TResult>同期タスク実行の終了を待つために使えます。
単純な非同期メソッドの構造は以下の通りです。
メソッドが非同期キーワードでマークされているわけではなく、非同期メソッドであり、非同期メソッドの内部に直接現れる文も同期的に実行されます非同期で実行されるコンテンツは、タスククラスを使って実行する必要があります
実際、wait文を含まない非同期メソッドは同期的に実行され、その時点でコンパイラが警告を出します。

簡単な例として、async/awaitを使って画面上でコンテンツを同時に出力します:

出力:(Mono 4.4.0 & ArchLinux x64)

上記のプログラムから、asyncキーワードタグ付きの非同期メソッドでは、awaitを使用する前のコードは同期的に実行され、awaitを呼び出した後は残りのコードが別のスレッドで非同期で実行されることが容易に分かります。





先の:FSADF{:1_2:}
次に:RestSharp a. NET(C#) HTTP ヘルパークラスコンポーネント
掲載地 2017/11/01 19:57:12 |
見て、見て、見て
掲載地 2019/01/29 9:37:53 |
私は百度で長い間探しました#非同期タスク呼び出し()私は自分が立っていることに気づいた上記のメソッドはasyncキーワードを使ってTaskクラスのInvokeメソッドを返します。これもスレッドの問題を解決します。この関数全体の意味は何でしょうか?
掲載地 2019/01/29 21:14:36 |
これは本当に良いことで、時間があるときにこうした共有を書こうと思います
掲載地 2019/02/15 16:17:22 |
出力結果は非同期実行の影響を明確に見ることができず、非同期入力は同時に行うべきです
免責事項:
Code Farmer Networkが発行するすべてのソフトウェア、プログラミング資料、記事は学習および研究目的のみを目的としています。 上記の内容は商業的または違法な目的で使用されてはならず、そうでなければ利用者はすべての結果を負うことになります。 このサイトの情報はインターネットからのものであり、著作権紛争はこのサイトとは関係ありません。 ダウンロード後24時間以内に上記の内容を完全にパソコンから削除してください。 もしこのプログラムを気に入ったら、正規のソフトウェアを支持し、登録を購入し、より良い本物のサービスを受けてください。 もし侵害があれば、メールでご連絡ください。

Mail To:help@itsvse.com