[解決済み] 警告 CS1998 を抑制する。この非同期メソッドには 'await' がありません。
質問
を返すいくつかの関数を持つインタフェースがあります。
Task
. このインターフェイスを実装しているクラスの中には await するものがないものもあれば、単に throw するものもあり、そのため警告は無意味で迷惑なものです。
これらの警告を抑制することは可能でしょうか?例えば
public async Task<object> test()
{
throw new NotImplementedException();
}
の収量。
警告 CS1998: この非同期メソッドは 'await' 演算子を持たないため、同期的に実行されます。 同期的に実行されます。await' 演算子を使用して、ノンブロッキング API 呼び出しを待機させることを検討してください。 非ブロックAPIコールを待つには 'await' 演算子を、CPU負荷の高い処理をバックグラウンドスレッドで行うには 'await Task.Run(...)' を使うことを検討してください。 を使用することを検討してください。
どのように解決するのですか?
<ブロッククオートいくつかの非同期関数を持つインターフェースを持っています。
を返すメソッド
Task
, 私は信じています。
async
は実装の詳細なので、インターフェースメソッドに適用することはできません。
インターフェイスを実装しているクラスの中には、awaitするものがないものもありますし、ただ投げるだけのものもあるかもしれません。
このような場合は、以下のように
async
は実装の詳細です。
に何もない場合は
await
を返すだけでよいでしょう。
Task.FromResult
:
public Task<int> Success() // note: no "async"
{
... // non-awaiting code
int result = ...;
return Task.FromResult(result);
}
を投げる場合
NotImplementedException
の場合、手続きはもう少し語感が良くなります。
public Task<int> Fail() // note: no "async"
{
var tcs = new TaskCompletionSource<int>();
tcs.SetException(new NotImplementedException());
return tcs.Task;
}
を投げるメソッドがたくさんある場合
NotImplementedException
を投げるメソッドがたくさんある場合 (それ自体が、いくつかの設計レベルのリファクタリングが良いことを示すかもしれません)、ヘルパークラスに語感をラップすることができます。
public static class TaskConstants<TResult>
{
static TaskConstants()
{
var tcs = new TaskCompletionSource<TResult>();
tcs.SetException(new NotImplementedException());
NotImplemented = tcs.Task;
}
public static Task<TResult> NotImplemented { get; private set; }
}
public Task<int> Fail() // note: no "async"
{
return TaskConstants<int>.NotImplemented;
}
ヘルパークラスは、GC が収集しなければならないゴミも減らします。
Task
と
NotImplementedException
オブジェクトを作成します。
他にもいくつか タスク定数タイプの例が私の AsyncEx ライブラリにあります。 .
関連
-
[解決済み] 'SubSonic.Schema .DatabaseColumn' 型のオブジェクトをシリアライズする際に、循環参照が検出されました。
-
[解決済み】Unity3DでOnTriggerEnterが動作しない件
-
[解決済み] UnityでOnCollisionEnterが呼ばれない
-
[解決済み】MetadataException: 指定されたメタデータ・リソースをロードできない
-
[解決済み】Swashbuckle/Swagger + ASP.Net Core: "Failed to load API definition" (API定義の読み込みに失敗しました
-
[解決済み】Moqを使用してメソッド呼び出しを検証する
-
[解決済み】5.7.57 SMTP - MAIL FROMエラー時に匿名メールを送信するためにクライアントが認証されない
-
[解決済み】画像のペイントにTextureBrushを使用する方法
-
[解決済み] async」と「await」の使い方とタイミング
-
[解決済み] この非同期メソッドは'await'演算子を持たないため、同期的に実行されます」という警告を気にする必要があるか?
最新
-
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 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み] [Entity Framework 4.1でエンティティに関連オブジェクトを追加する際に、エンティティオブジェクトをIEntityChangeTracker.の複数のインスタンスから参照できない。
-
[解決済み】統合マネージドパイプラインモードで適用されないASP.NETの設定が検出された
-
[解決済み】C# ASP.NET使用時に「WebClientのリクエスト中に例外が発生しました。
-
[解決済み】ORA-01008: すべての変数がバインドされていません。これらはバインドされています。
-
[解決済み】WPFでXamlファイルにコメントを追加する方法は?
-
[解決済み】値が期待した範囲に収まらない
-
[解決済み】MetadataException: 指定されたメタデータ・リソースをロードできない
-
[解決済み】 C# 条件演算子エラー 代入、call、increment、decrement、await、new object 式のみ文として使用可能です。
-
[解決済み】Nullableオブジェクトは値を持たなければならない?
-
[解決済み] この非同期メソッドは'await'演算子を持たないため、同期的に実行されます」という警告を気にする必要があるか?