asp.net web 环境下使用多线程,对象为NULL,容易使IIS 应用程序池崩溃

很多时候需要一个线程异步执行

ThreadPool.QueueUserWorkItem(TryCreateDataAsync, info);

大多数时候我这样异步执行一个任务

在这种情况下
TryCreateAndSaveData 这个方法 里面经常出现错误,致使IIS 应用程序池崩溃

报错提示:this.storeDataList.Add(info.Store, outdata); 对象为null

    void TryCreateDataAsync(object o)

    {

        RequestInfo info = o as RequestInfo;


        //创建并存储缓存

        Store.StoreData outdata = null;


        TryCreateAndSaveData(info, out outdata);

    }


    bool TryCreateAndSaveData(RequestInfo info, out Store.StoreData outdata)

    {

        outdata = CreateData(info);


        if (outdata != null)

        {


            //存入store

            if (outdata.Seconds > 0 && outdata.BodyData.Length >= 0)

            {

                this.storeDataList.Add(info.Store, outdata);

            }


            return true;

        }


        return false;

    }

https://img2.mukewang.com/5ba77d9b000195fc07540573.jpg

墨色风雨
浏览 862回答 2
2回答

Smart猫小萌

要看你这个PageCache是怎么实现的了, 如果是用HttpContext那就是不行的。多线程下是获取不到HttpContext的
打开App,查看更多内容
随时随地看视频慕课网APP