我有一个场景,我有一个页面,在单击按钮时打开一个对话框,在按钮单击打开的对话框表单中,我可以从选定的 .txt 文件中读取数据列表并构建查询并将数据添加到一些数据库表。由于可能存在大量数据,因此此过程可能需要很长时间,因此用户在上传完成之前将无法在应用程序上工作。因此,为了使上传过程异步,我正在使用 PageAsyncTask。下面是代码示例,但在 PageAsyncTask 中调用的方法中,HttpContext.Current 为空,因此我无法使用会话处理。请对此提供任何指导,为什么这是空的,在这种情况下我如何使用会话
protected void BtnUpload_click(object sender, EventArgs e)
{
PageAsyncTask asyncTask1 = new PageAsyncTask(OnBegin, OnEnd, OnTimeout, SessionManager.UserData, true);
Page.RegisterAsyncTask(asyncTask1);
Page.ExecuteRegisteredAsyncTasks();
}
public IAsyncResult OnBegin(object sender, EventArgs e,
AsyncCallback cb, object extraData)
{
_taskprogress = "AsyncTask started at: " + DateTime.Now + ". ";
uData = extraData as UserData;
_dlgt = new AsyncTaskDelegate(BeginInvokeUpload);
IAsyncResult result = _dlgt.BeginInvoke(cb, extraData);
return result;
}
private void BeginInvokeUpload()
{
string selectedFileName = string.Empty;
string returnValuePage = string.Empty;
User teller = new User();
SessionManager.UserData = uData;
}
private void BeginInvokeUpload()
{
string selectedFileName = string.Empty;
string returnValuePage = string.Empty;
User teller = new User();
SessionManager.UserData = uData;
}
public class SessionManager
{
public static UserData UserData
{
get
{
UserData userData = null;
if (HttpContext.Current.Session["UserData"] != null)
{
userData = HttpContext.Current.Session["UserData"] as UserData;
}
return userData;
}
set
{
HttpContext.Current.Session["UserData"]=value;
}
}
}