Недавно я наткнулся на некоторый код, содержащийся в методе 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()
{
}
}