現在のページから、動的コントロールを作成して更新パネルに追加するメソッドにアクセスしようとしています。CacheItemUpdateCallback の最後にこのメソッドを呼び出して、キャッシュ内の新しいデータを表示したいと考えています。
いくつかの調査を行った後、スレッド固有であるため、非同期メソッドから HttpContext.Current にアクセスできないようです。
新しい値がキャッシュに書き込まれた後に動的コンテンツを強制的に更新するより良いプロセスはありますか、または CacheItemUpdateCallback から HttpContext.Current にアクセスできる手段はありますか?
コンテンツを作成するメソッド。ここで、コンテナーはページ上の div オブジェクトの配列です。
public void createInnerHtml()
{
this.contentLength = ddlContentNumber.SelectedIndex + 1;
for (int i = 0; i < this.contentLength; i++)
{
containers[i].Controls.Clear();
containers[i].Attributes["Data-Value"] = mainFeeds[i].DataValue.ToString();
containers[i].InnerHtml = mainFeeds[i].getHeaderString();
containers[i].Controls.Add(controlManager.getControl(mainFeeds[i]));
}
}
私ができるようにしたいこと:
private void openIncidentsUpdateCallback(string key, CacheItemUpdateReason reason, out object expensiveObject, out CacheDependency dependency, out DateTime absoluteExpiration, out TimeSpan slidingExpiration)
{
dependency = null;
absoluteExpiration = DateTime.Now.AddSeconds(25);
slidingExpiration = Cache.NoSlidingExpiration;
expensiveObject = getExpensiveObject()
Page page = (Page)HttpContext.Current.Handler;
if (page != null)
{
((ReportPage)page).createInnerHtml();
page.updatePanel1.update()
}
}