[解決済み】C#のコンソールアプリケーションで「async」を使用する【重複あり
2022-04-20 21:44:53
質問
こんな簡単なコードがあります。
public static async Task<int> SumTwoOperationsAsync()
{
var firstTask = GetOperationOneAsync();
var secondTask = GetOperationTwoAsync();
return await firstTask + await secondTask;
}
private async Task<int> GetOperationOneAsync()
{
await Task.Delay(500); // Just to simulate an operation taking time
return 10;
}
private async Task<int> GetOperationTwoAsync()
{
await Task.Delay(100); // Just to simulate an operation taking time
return 5;
}
素晴らしい。これはコンパイルされます。
しかし、コンソールアプリケーションを持っていて、上のコードを実行したいとします(呼び出しは
SumTwoOperationsAsync()
).
static void Main(string[] args)
{
SumTwoOperationsAsync();
}
しかし、私は
sync
を同期させなければなりません。
アップ
と
下
:
これは、私の
Main
としてマークする必要があります。
async
?
さて、それは できない は、コンパイルエラーがあるためです。
エントリーポイントに 'async' 修飾子を付けることができません。
もし私が非同期のことを理解しているならば、スレッドは
Main
関数 →
SumTwoOperationsAsync
→は両方の関数を呼び出すことになり、アウトになります。しかし
SumTwoOperationsAsync
何が足りないのか?
解決方法は?
ほとんどのプロジェクトタイプで
async
という文字列で終わります。
async void
イベントハンドラまたは
Task
をフレームワークに送信します。
ただし、Consoleアプリはこれに対応していません。
を行うだけか、あるいは
Wait
を返します。
static void Main()
{
MainAsync().Wait();
// or, if you want to avoid exceptions being wrapped into AggregateException:
// MainAsync().GetAwaiter().GetResult();
}
static async Task MainAsync()
{
...
}
または 私が書いたような独自のコンテキストを使用します。 :
static void Main()
{
AsyncContext.Run(() => MainAsync());
}
static async Task MainAsync()
{
...
}
の詳細情報
async
コンソールアプリは
ブログ
.
関連
-
[解決済み】ここで「要求URIに一致するHTTPリソースが見つかりませんでした」となるのはなぜですか?
-
[解決済み] UnityでOnCollisionEnterが呼ばれない
-
[解決済み] usingディレクティブはネームスペースの内側と外側のどちらを使うべきですか?
-
[解決済み] forEachループでasync/awaitを使用する
-
[解決済み] async」と「await」の使い方とタイミング
-
[解決済み] .NETコンソールアプリケーションでアプリケーションのパスを取得するにはどうすればよいですか?
-
[解決済み] 非同期Task<T>メソッドを同期的に実行するにはどうしたらいいですか?
-
[解決済み] async/await - タスクとvoidをいつ返すか?
-
[解決済み] 複数のタスクにasync/awaitを使用する
-
[解決済み] Task.Runをメソッドに入れないと非同期にはならないのですか?
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み】"出力タイプがクラスライブラリのプロジェクトは直接起動できない"
-
[解決済み】Ajax処理で「無効なJSONプリミティブ」と表示される件
-
[解決済み】スクリプトクラスが見つからないので、スクリプトコンポーネントを追加できない?
-
[解決済み】ここで「要求URIに一致するHTTPリソースが見つかりませんでした」となるのはなぜですか?
-
[解決済み] [Entity Framework 4.1でエンティティに関連オブジェクトを追加する際に、エンティティオブジェクトをIEntityChangeTracker.の複数のインスタンスから参照できない。
-
[解決済み】ソケットのアドレス(プロトコル/ネットワークアドレス/ポート)は、通常1つしか使用できない?
-
[解決済み】プロジェクトビルド時のエラー。エディタでスクリプトにコンパイルエラーがあるため、Playerのビルドにエラーが発生する
-
[解決済み】「入力文字列が正しい形式ではありませんでした」エラーの解決方法は?[重複しています]。
-
[解決済み】コンソールアプリのMainメソッドにasync修飾子を指定できない。
-
[解決済み] 出力が表示されると、コンソールウィンドウがすぐに閉じてしまうのですが?