ボタンをクリックするとダイアログを開くページがあり、ボタンをクリックすると開いたダイアログフォームで、選択した.txtファイルからデータのリストを読み取り、クエリを作成してデータをいくつかに追加できるシナリオがあります。データベーステーブル。大量のデータが存在する可能性があるため、このプロセスには長い時間がかかる可能性があります。これにより、ユーザーはアップロードが完了するまでアプリケーションで作業できなくなります。したがって、アップロードプロセスをAsynkにするために、PageAsyncTaskを使用しています。以下はコードサンプルですが、PageAsyncTaskで呼び出されるメソッドでは、HttpContext.Currentがnullであるため、セッション処理を使用できません。なぜこれがnullになるのか、この場合にセッションをどのように使用できるのかについてのガイダンスを教えてください
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;
}
}
}