public async Task<ActionResult> Search(string q)
{
var data = db.MediaPlanBilingInvoices.Where(m => m.IsDeleted == false);
//allthe stuff
decimal? allinvoicetotal=0;
decimal? allrototal = 0;
if (Noofrecords > 0)
{
if (WebConstants.PrintMedia)
{
var roobject = data.Where(x => x.isPrint == true).SelectMany(m => m.MediaPlanBilingInvoiceDetails);
var roobjects =roobject.Select(m=>m.RoId);
Func<decimal?> functions = new Func<decimal?>(() => roobject.Sum(m => m.MediaPlanRO.MediaPlanROPrints.Sum(qq => qq.MediaPlanPrint.Amount)));
var tasksro = await System.Threading.Tasks.Task.Factory.StartNew<decimal?>(functions);
allrototal = allrototal + tasksro.Result;
}
else if (WebConstants.ElectronicMedia)
{
var roobject = data.Where(x => x.iselectronic == true).SelectMany(m => m.MediaPlanBilingInvoiceDetails);
var roobjects =roobject.Select(m=>m.RoId);
Func<decimal?> functions = new Func<decimal?>(() => roobject.Sum(m => m.MediaPlanRO.MediaPlanROPrints.Sum(qq => qq.MediaPlanPrint.Amount)));
var tasksro = await System.Threading.Tasks.Task.Factory.StartNew<decimal?>functions);
allrototal = allrototal + tasksro ;
}
}
}
return Viewdata);
}
}
異なる基準で異なるテーブルのrosの合計を計算しようとしています。asp.net mvc asyncメインスレッドをブロックしないようにすることを待ちます
問題があるのは、プログラムリーチャーallrototalが停止し、結果が失われるまで次の行に移動しないという問題です。私はそこに止まらないように走り続けたい。どうすればいい?
これはasync/awaitとは何ですか。それは他の要求がそれを使用できるようにスレッドを非ブロッキングにします。 – Dandy
これはasync/awaitがどのように動作するかを示しています。結果が得られるまでは使用できません。 –
pgogramがstartnewを見つけるとすぐに、バックグラウンドでクエリの実行が開始されますか? – maztt