[解決済み] usingとawait usingの違いは何ですか?また、どちらを使用するかはどのように判断すればよいのでしょうか?
質問
Visual Studio では、次のようにすることを推奨している場合があることに気づきました。
await using var disposable = new Disposable();
// Do something
この代わりに
using var disposable = new Disposable();
// Do something
の違いは何ですか?
using
と
await using
?
どのように決定すればよいのでしょうか?
どのように解決するのですか?
を使用したクラシック同期
Classic using は
Dispose()
メソッドを実装したオブジェクトの
IDisposable
インターフェイスを実装したオブジェクトの
using var disposable = new Disposable();
// Do Something...
と同じです。
IDisposable disposable = new Disposable();
try
{
// Do Something...
}
finally
{
disposable.Dispose();
}
を使った新しい非同期await
新しいawait usingは、呼び出しと待ち受けを
DisposeAsync()
メソッドを実装したオブジェクトの
IAsyncDisposable
インターフェイスを実装したオブジェクトの
await using var disposable = new AsyncDisposable();
// Do Something...
と同じです。
IAsyncDisposable disposable = new AsyncDisposable();
try
{
// Do Something...
}
finally
{
await disposable.DisposeAsync();
}
この
IAsyncDisposable インターフェース
が追加されました。
.NET Core 3.0
と
.NET Standard 2.1
.
.NETでは、アンマネージドリソースを所有するクラスは通常 IDisposable インターフェイスを実装し、非管理下のリソースを同期的に解放するメカニズムを提供します。しかし、場合によっては 同期的なものに加えて(あるいは代わりに)、非管理下のリソースを解放するための非同期的なメカニズムを提供する。 . このようなメカニズムを提供することで、コンシューマは GUI アプリケーションのメインスレッドを長時間ブロックすることなく、リソースを大量に消費する dispose 操作を実行することができます。
このような IAsyncDisposable.DisposeAsync このインターフェースのメソッドは ValueTask を返します。これは、非同期ディスポーザブル操作を表します。アンマネージドリソースを所有するクラスはこのメソッドを実装し、これらのクラスのコンシューマは、それがもはや必要とされないとき、オブジェクト上でこのメソッドを呼び出します。
関連
-
[解決済み] C#のStringとstringの違いは何ですか?
-
[解決済み] IDisposable インターフェースの正しい使用法
-
[解決済み] Try-catchは私のコードをスピードアップさせるか?
-
[解決済み] C#のconstとreadonlyの違いは何ですか?
-
[解決済み] Static readonly」対「const」。
-
[解決済み] フィールドとプロパティの違いは何ですか?
-
[解決済み] async」と「await」の使い方とタイミング
-
[解決済み] SelectとSelectManyの違い
-
[解決済み] キーワード「ref」と「out」の違いは何ですか?
-
[解決済み】IEnumerable vs List - What to Use? どのように動作するのでしょうか?
最新
-
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プリミティブ」と表示される件
-
[解決済み] メンバー '<メンバー名>' にインスタンス参照でアクセスできない
-
[解決済み】Excel "外部テーブルが期待された形式ではありません。"
-
[解決済み】クロススレッド操作が有効でない。作成されたスレッド以外のスレッドからアクセスされたコントロール
-
[解決済み】WPFでXamlファイルにコメントを追加する方法は?
-
[解決済み】Socket.Selectがエラー "An operation was attempted on something that is not a socket" を返す。
-
[解決済み] UnityでOnCollisionEnterが呼ばれない
-
[解決済み】Unity 「関連するスクリプトを読み込むことができません」「Win32Exception: システムは指定されたファイルを見つけることができません"
-
[解決済み】Entity FrameworkからのSqlException - セッション内で他のスレッドが動作しているため、新しいトランザクションは許可されません。
-
[解決済み】画像のペイントにTextureBrushを使用する方法