このメソッドExportTo3rdParty()
を AsyncController を使用するように変換しようとしています。
public JsonResult SaveSalesInvoice(SalesInvoice invoice)
{
SaveInvoiceToDatabase(invoice); // this is very quick
ExportTo3rdParty(invoice); // this is very slow and should be async
}
しかし、ExportTo3rdParty() メソッドは複数の場所で HttpContext.Current を使用します (変更するには多すぎる - 元のコーダーは依存性注入を十分に使用していませんでした)。たとえば、GetDefaultCurrency() を呼び出します。ExportTo3rdParty() が AsyncController を介して呼び出された場合、これは引き続き機能しますか?
public Currency GetDefaultCurrency()
{
Currency currency;
string key = string.Format("DefaultCurrency_{0}",
HttpContext.Current.User.Identity.Name);
currency = HttpRuntime.Cache.Get(key) as Currency;
if (currency == null)
{
currency = LookupDefaultCurrency();
HttpRuntime.Cache[key] = currency;
}
}
Thread.Start を使用すると、HttpContext.Current にアクセスできないことがわかっています。しかし、AsyncController はどうでしょうか。