我有一个类别, 它会点燃一个方法, 忘记它。 唯一的问题是, 如果这个方法有 < code> Httpcontext code >, 它会扔出 < code> NullReferenceException code > 。
我的猜测是,我无法在 Threadpool. QuueUserworkIm(动态 Invoke Shim,新目标Info(d, args)));
中使用 Htpcontext
,因为我正在获取 NullReferenceexpeption
。 周围是否有它的工作?
Httpcontext
的方法:
public static DataTable GetDataTable(string name)
{
return (DataTable)HttpContext.Current.Cache[name];
}
火灾和忘记方法的方法:
using System;
using System.Threading;
namespace XGen.Kuapo.BLL
{
public class AsyncHelper
{
class TargetInfo
{
internal TargetInfo(Delegate d, object[] args)
{
Target = d;
Args = args;
}
internal readonly Delegate Target;
internal readonly object[] Args;
}
private static WaitCallback dynamicInvokeShim = new WaitCallback(DynamicInvokeShim);
public static void FireAndForget(Delegate d, params object[] args)
{
ThreadPool.QueueUserWorkItem(dynamicInvokeShim, new TargetInfo(d, args));
}
static void DynamicInvokeShim(object o)
{
try
{
TargetInfo ti = (TargetInfo)o;
ti.Target.DynamicInvoke(ti.Args);
}
catch (Exception ex)
{
// Only use Trace as is Thread safe
System.Diagnostics.Trace.WriteLine(ex.ToString());
}
}
}
}