(我在主题中宽松地使用了“异步”一词)
我一直在使用以下代码一段时间,以将初始 session 上下文信息(例如成员(member)详细信息)保存到数据库中,以便以后进行跟踪。我已建议其他人使用此概念来加快他们的某些流程,但我不愿意提出可能具有危险性的建议。
我想知道这是否可以接受,或者稍后在高峰流量时间内会引起一些线程问题吗?
new Thread(() => {
//All my logic for saving info to DB
})
{ Name = "My long running page process", IsBackground = true, Priority = ThreadPriority.Normal }.Start();
更新
谢谢!
在David Basarab回答之后,我认为这将是我的新方法:
Action someLongProcess = () =>
{
// You DB Work
};
someLongProcess.BeginInvoke((x) => {
someLongProcess.EndInvoke(x);
// It is now done you can do something
}, null);
最佳答案
我会使用线程池。因为它提供了使用预先定义的线程池,而不是为每个请求创建一个新的线程池。通过公开回调,它为您提供了真正的异步。
您可以只使用Action委托(delegate)并调用BeginInvoke,后者在后台使用线程池。
Action someLongProcess = () =>
{
// You DB Work
};
AsyncCallback callback = (r) =>
{
// It is now done you can do something or pass null to do nothing
};
someLongProcess.BeginInvoke(callback, null);