ASP.NET 4.5 でアプリケーションを開発しています。次のようなデリゲート関数を作成しました。
private delegate void CounterDelegate(List<int> temp, int id);
private CounterDelegate sfd;
public Foo(){
sfd = new CounterDelegate(this.Counter);
}
私はそのような関数を呼び出します:
sfd.BeginInvoke(temp, id, null, null);
目標は、非同期関数内で非同期方式で「カウンター」関数を実行することです。これはこれでうまくいきます。関数は、Web サービス内の関数から呼び出されます。私の問題はセッションにあります。
私の機能:
[WebMethod(EnableSession = true)]
public void Counter(List<int> temp, int id)
{
if (Session["user"] == null)
{
// do something
}
}
問題は、Session が null に等しく、そのように初期化しようとすると、次のようになることです。
Session["user"] = new List<int>();
NullReferenceException がユーザー コード 例外によって処理されませんでした。私はそれをtry catchに入れてcatchブロックで初期化しようとしましたが、問題は関数を離れるため、その後コードを実行し続けることができないことです。
Webサービスの通常の非非同期関数で行ったかのように、セッション変数を初期化して使用可能にする方法はありますか?