0

私は独特の問題に遭遇しました。基本的に、サーバーからデータを読み取る既存の非同期クラスのラッパーを作成しています。ライブラリにある元のメソッドは次のようなものです

public async Task<IEnumerable<PersonData>> GetPersonData();

これで見事に動作します

var people = await GetPersonData();

ただし、ラップしようとすると問題が発生します。簡単にするために、テストしようとした最初のバージョンを含めましたが、機能しませんでした。さらに、実際のラッピング方法では、実際の理由を示していない独特の「待機できません」エラーが発生します。できません。これはコンパイル エラーなので、何か間違ったことをしているに違いありません。

public async Task<IEnumerable<PersonData>> GetWrappedPersonData()
{
    return await clientClass.GetPersonData();
}

そして、メインクラスでこれを呼び出すと

var wrappedPeople = await wrapper.GetWrappedPersonData();

「'System.Threading.Tasks.Task<System.Collections.Generic.IEnumerable<PersonData>>' を待機できません」という「待機」のエラーが表示されます。

GetWrappedPersonData にカーソルを合わせると、メソッドが待機可能であることが示されます。なぜここでこれを待つことができないのか、私は混乱しています。

4

3 に答える 3

1

問題の原因はわかりましたが、この全体が複数の異なるプロジェクトで構成されているという事実でした。その通信モジュールには、サービスプロバイダーを分離するための複数の異なるライブラリが含まれています。返された "PersonData" は、これらのアセンブリの 1 つに存在し、メイン アプリ プロジェクトから参照されていませんでした。私が受け取ったエラーは、これが根本的な原因であることを実際には反映していませんでした。

したがって、基本的に、私が受け取ったエラーは、ソリューションの実際の問題についてのヒントをほとんど与えませんでした。これが、同じエラーを受け取った他の誰かに役立つことを願っています。:P

于 2013-09-02T14:26:58.250 に答える
0

ただし、コンパイラ メッセージ エラーのように見えます。

awaitしかし、解決策は、ラッパーに入れるべきではありません:)

あなたawaitがタスクをアンラップすると、すでに待機中のタスクはできなくなりますawait:)

于 2013-09-02T14:15:37.980 に答える
0

async呼び出し方法が必要です。その方法がMainの場合は、この回答を参照してください。 https://stackoverflow.com/a/9212343/171121

于 2013-09-02T14:22:33.420 に答える