Огонь C# и Забывает вызов в WebMethod

Нет, потому что я только файлы управления версиями, которые необходимы для создания программного обеспечения. Кроме того, у отдельных разработчиков могут быть свои собственные определенные для проекта настройки.

5
задан JamesW 14 December 2009 в 11:29
поделиться

2 ответа

Вы пытаетесь использовать «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);
    }
}
10
ответ дан 13 December 2019 в 22:09
поделиться

Как сказано в документации, 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); 
 } 
}

Мы успешно используем этот код в нашем приложении, хотя это не веб.

0
ответ дан 13 December 2019 в 22:09
поделиться
Другие вопросы по тегам:

Похожие вопросы: