私はAsync/Await機能の新機能で、MVCプロジェクトでそれらを使用しようとしました。私はこれらのコードを使用する最初の方法についてAsync Awaitメソッド
public async Task<CompanyBoardViewModel> GetIndexViewModel(IEnumerable<int> parameter, bool isMore = false, bool currentRole = false)
{
return new CompanyBoardViewModel
{
TopJoinAplicant = await this.TopJointApplicant(parameter, isMore),
TopPriorityCountry = await this.TopPriorityCountry(parameter),
TopPublicationCountries = await this.TopPublicationCountries(parameter),
TopGrantedInventors = await this.TopGrantedInventors(parameter),
TopIPC = await this.TopIPC(parameter),
TopCPC = await this.TopCPC(parameter),
TopCitedInventors = await this.TopCitedInventors(parameter),
TopCitedPatents = await this.TopCitedPatents(parameter),
CGAR = await this.GetCGAR(parameter),
};
}
::私はawait
を使用してこのGetIndexViewModelで
var model = this.quantService.GetIndexViewModel(companyIds, isMore, currentrole).Result;
:
だからコントローラから、私は私のモデルを初期化するために、現在のメソッドを呼び出す
private async Task<QuantTableViewModel<TopFilterViewModel>> TopJointApplicant(IEnumerable<int> ids, bool isMore = false)
{
return await Task.Run(() => new QuantTableViewModel<TopFilterViewModel>
{
Tableid = "TopJointApplicants",
Title = "Top Joint Applicants",
FirstCol = "Position",
SecondCol = "Joint Applicant",
ThirdCol = "#",
IsSeeMore = isMore,
Data = this.cache.TopJointApplicant(ids).ToList()
});
}
この方法では、私はData = this.cache.TopJointApplicant(ids).ToList()
このメソッドはプロシージャを作成し、データベースから情報を取得します(このメソッドは問題なく実行されますが、QuantTableViewModel<TopFilterViewModel>
スタックを返します)。
これがなぜ起こったのか誰にでもわかっていただければ、本当にうれしいです。
メソッドに適切な書式を設定できますか? –
@ÖmerCinbat - 私はピアレビューを待っている編集を提出しました。 – smoksnes
await + Task.Runの使用は意味がなく、実際には有害です。なぜ、いつ* asyncが良いかを調べることをお勧めします。 – usr