我试图异步调用两个方法(一个是webservice,另一个是帮助用户登录主页的方法)。我不需要它们返回任何值,因为webservice方法仅用于日志记录,另一个用于验证用户和登录主页的代码。我在使用asp.NET 2.0
我试过阅读许多建议使用delagates等的文章......但我从未研究过这些。谁能帮我这个。会很感激。
答案 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});
}