从HTTP发布正确启动任务/线程

时间:2019-03-05 23:04:22

标签: multithreading http-post

我最近遇到了一些包含在http post方法中的代码,该方法调用一个启动新的长期运行线程的方法。线程代码在类级别引用变量,并在类中调用其他私有方法。基本结构如下。这是有效的设置,还是post方法中的Task.Run会更好?如果newThread在类级别引用变量,这会带来任何危险吗?那些在此级别有更多经验的人的其他建议将不胜感激。


public class ApiController1 : ApiController
{
    private string _s1;
    private string _s2;
    private int _i1;
    //etc...
    public HttpResponseMessage Post([FromBody]RequestInput request)
    {
        LongRunningMethod(request);
        return Request.CreateResponse(HttpStatusCode.OK);
    }
    private void LongRunningMethod(RequestInput request)
    {
        var newthread = new Thread(() =>
        {
            try
            {
                //long running process
                //  references class-level variables (_s1, _s2, etc.)
                //  calls other private methods in the class
                Method1();
                // starts other tasks
                taskList.Add(new Task...etc.)
                Task.WaitAll(taskList);
                // etc.
                // etc.
                // etc.
            }
            catch (Exception ex)
            { }
        };

        newthread.Start();
    }
    private void Method1()
    {
    }
}

0 个答案:

没有答案