Правильно запустить задачу / поток из HTTP Post - PullRequest
0 голосов
/ 06 марта 2019

Недавно я наткнулся на некоторый код, содержащийся в методе http post, который вызывает метод, который запускает новый, продолжительный поток.Код потока ссылается на переменные на уровне класса и вызывает другие частные методы внутри класса.Основная структура ниже.Это эффективная настройка, или будет лучше Task.Run в методе post?Если 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()
    {
    }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...