(我在主题中宽松地使用了“异步”一词)

我一直在使用以下代码一段时间,以将初始 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);

10-08 19:03