Возможно, это довольно простой вопрос, но я хочу узнать, как лучше всего сделать поток кода безопасным.
Я использую внешний многопоточный API в многопоточной среде.
Возвращает IEnumerable<ApiDto>
.
Затем я сопоставляю каждое из ApiDto с DTO нашего приложения: MyDto .
Как мне убедиться, что код является поточно-ориентированным?
Например:
Это мой класс, который получает элементы из API
public class ApiRepo
{
private IApi api;
public ApiRepo()
{
api=new Api("url");
}
public IEnumerable<MyDto> GetItems()
{
var apiDtos = api.GetNonThreadSafeItems();
foreach(var apiDto in apiDtos)
{
var myDto = new MyDto(apiDto.Name);
yield return myDto;
}
}
}
Это мое клиентское приложение.
Создается несколько экземпляров Client, а данные извлекаются из API.
public class Client
{
public void GetData()
{
var items = new ApiRepo().GetItems().ToList();
Console.WriteLine(items.Count);
}
}
Должен ли я установить блокировку в Client.GetData () или есть ли лучший способ сделать код безопасным для потоков?