【发布时间】:2011-09-11 21:07:22
【问题描述】:
我有以下场景:
假设我们有两个不同的 Web 部件对相同的数据进行操作 - 一个是饼图,另一个是数据表。 在它们的 Page_Load 中,它们从数据库中异步加载数据,并在加载时将其放入应用程序缓存中以供其他 Web 部件进一步使用或使用。所以每个 web 部件都有类似这样的代码:
protected void Page_Load(object sender, EventArgs e)
{
if (Cache["dtMine" + "_" + Session["UserID"].ToString()]==null)
{
...
Page.RegisterAsyncTask(new PageAsyncTask(
new BeginEventHandler(BeginGetByUserID),
new EndEventHandler(EndGetByUserID),
null, args, true));
}
else
{
get data from cache and bind to controls of the webpart
}
}
由于两个 webpart 都对相同的数据进行操作,因此执行两次代码对我来说没有意义。
让一个 Web 部件与另一个 Web 部件通信的最佳方法是什么?“我已经在获取数据,所以请等到我将其放入缓存中”?
我一直在考虑互斥锁、锁定、为缓存项分配临时值并等待该临时值更改...许多选项 - 我应该使用哪一个。
【问题讨论】:
-
为什么不做一个静态助手类?
标签: c# asp.net multithreading caching web-parts