Нет, потому что я только файлы управления версиями, которые необходимы для создания программного обеспечения. Кроме того, у отдельных разработчиков могут быть свои собственные определенные для проекта настройки.
Вы пытаетесь использовать «HttpContext» в своем методе? Если это так, вы должны сначала сохранить его в локальной переменной ... Кроме того, я бы просто использовал ThreadPool.QueueUserWorkItem .
Пример:
[WebMethod]
public string NewBusiness(string myParam)
{
if (InDisasterMode())
{
// Only if you actually need this...
HttpContext context = HttpContext.Current;
// Thread the standard method call
ThreadPool.QueueUserWorkItem(delegate
{
HttpContext.Current = context;
ProcessNewBusiness(myParam);
});
return 'ok';
}
else
{
// Call standard method synchronously to get result
return ProcessNewBusiness(myParam);
}
}
Как сказано в документации, EndInvoke должен вызываться всегда, поэтому вам нужно создать помощник для выполнения таких операций FireAndForget: http://www.reflectionit.nl/Blog/default.aspx?guid=ec2011f9-7e8a-4d7d-8507-84837480092f
Я вставляю код:
public class AsyncHelper {
delegate void DynamicInvokeShimProc(Delegate d, object[] args);
static DynamicInvokeShimProc dynamicInvokeShim = new
DynamicInvokeShimProc(DynamicInvokeShim);
static AsyncCallback dynamicInvokeDone = new
AsyncCallback(DynamicInvokeDone);
public static void FireAndForget(Delegate d, params object[] args) {
dynamicInvokeShim.BeginInvoke(d, args, dynamicInvokeDone, null);
}
static void DynamicInvokeShim(Delegate d, object[] args) {
DynamicInvoke(args);
}
static void DynamicInvokeDone(IAsyncResult ar) {
dynamicInvokeShim.EndInvoke(ar);
}
}
Мы успешно используем этот код в нашем приложении, хотя это не веб.