在ASP.NET 2.0中异步调用两个方法

时间:2009-09-03 15:57:26

标签: asp.net

我试图异步调用两个方法(一个是webservice,另一个是帮助用户登录主页的方法)。我不需要它们返回任何值,因为webservice方法仅用于日志记录,另一个用于验证用户和登录主页的代码。我在使用asp.NET 2.0

我试过阅读许多建议使用delagates等的文章......但我从未研究过这些。谁能帮我这个。会很感激。

2 个答案:

答案 0 :(得分:2)

如果您只是想“发射并忘记”,那么您可以将线程池​​工作项排队:

WaitCallback firstAction = delegate { webService.LogAccess(); };
WaitCallback secondAction = delegate { user.Login(); }

ThreadPool.QueueUserWorkItem(firstAction);
ThreadPool.QueueUserWorkItem(secondAction);

答案 1 :(得分:1)

如果您不需要等待结果,可以使用像Jon建议的ThreadPool.QueueUserWorkItem方法

如果你需要将一个参数传递给你的方法

string msg = "log message";
WaitCallback firstAction = delegate(object args) 
{ 
  string s = ((object[])args)[0]; 
  webService.LogAccess(s); 
};
ThreadPool.QueueUserWorkItem(firstAction, new object[] {msg});

我通常会设置另一个名为LogAsync的方法来处理所有的仪式

void LogAsync(string msg)
{
  WaitCallback firstAction = delegate(object args) 
  { 
    string s = ((object[])args)[0]; 
    webService.LogAccess(s); 
  };
  ThreadPool.QueueUserWorkItem(firstAction, new object[] {msg});
}