РЕДАКТИРОВАТЬ: Я был неправ насчет BackgroundWorker. Так что я заменил его на версию Thread, протестировано.
Если вы хотите, чтобы работа выполнялась асинхронно, вы можете изучить, как запустить другой поток.
public class Service1 : System.Web.Services.WebService
{
[WebMethod]
public void Log(int foo, int bar)
{
Thread a = new Thread(new ThreadStart(delegate()
{
// Do some processing here
// For example, let it sleep for 10 secs
Thread.Sleep(10000);
}));
a.Start();
}
}
Если метод Log завершит обработку, потребуется 10 секунд, если строка Thread.Sleep (10000) находится в самом методе Log. Однако при Thread a метод Log будет возвращен сразу после вызова.
Также обратите внимание, что с таким стилем асинхронного вызова нет простого способа гарантировать вызывающему клиенту, завершена операция вставки или нет,