Перейти к содержимому

System task что это

  • автор:

Отмена задач

Классы System.Threading.Tasks.Task и System.Threading.Tasks.Task поддерживают отмену с помощью маркеров отмены. См. дополнительные сведения об отмене в управляемых потоках. В классах задач отмена включает взаимодействие между пользовательским делегатом, который представляет операцию отмены, и кодом, который запросил отмену. Успешная отмена включает запрашивающий код, который вызывает метод CancellationTokenSource.Cancel, и пользовательский делегат, который своевременно завершает операцию. Операцию можно завершить одним из следующих способов.

  • Возвращаясь из делегата. Во многих сценариях этого параметра достаточно. Однако экземпляр задачи, отмененный таким образом, переходит в TaskStatus.RanToCompletion состояние , а не в TaskStatus.Canceled состояние .
  • Путем создания OperationCanceledException и передачи маркера, для которого была запрошена отмена. Предпочтительным способом выполнения является использование ThrowIfCancellationRequested метода . Задача, которая отменена таким образом, переходит в состояние Отменено, которое вызывающий код может использовать для проверки того, что задача ответила на запрос на отмену.

В следующем примере показан базовый шаблон отмены задачи, который вызывает исключение:

Маркер передается делегату пользователя и экземпляру задачи.

using System; using System.Threading; using System.Threading.Tasks; class Program < static async Task Main() < var tokenSource2 = new CancellationTokenSource(); CancellationToken ct = tokenSource2.Token; var task = Task.Run(() => < // Were we already canceled? ct.ThrowIfCancellationRequested(); bool moreToDo = true; while (moreToDo) < // Poll on this property if you have to do // other cleanup before throwing. if (ct.IsCancellationRequested) < // Clean up here, then. ct.ThrowIfCancellationRequested(); >> >, tokenSource2.Token); // Pass same token to Task.Run. tokenSource2.Cancel(); // Just continue on this thread, or await with try-catch: try < await task; >catch (OperationCanceledException e) < Console.WriteLine($"thrown with message: "); > finally < tokenSource2.Dispose(); >Console.ReadKey(); > > 
Imports System.Threading Imports System.Threading.Tasks Module Test Sub Main() Dim tokenSource2 As New CancellationTokenSource() Dim ct As CancellationToken = tokenSource2.Token Dim t2 = Task.Factory.StartNew(Sub() ' Were we already canceled? ct.ThrowIfCancellationRequested() Dim moreToDo As Boolean = True While moreToDo = True ' Poll on this property if you have to do ' other cleanup before throwing. If ct.IsCancellationRequested Then ' Clean up here, then. ct.ThrowIfCancellationRequested() End If End While End Sub _ , tokenSource2.Token) ' Pass same token to StartNew. ' Cancel the task. tokenSource2.Cancel() ' Just continue on this thread, or Wait/WaitAll with try-catch: Try t2.Wait() Catch e As AggregateException For Each item In e.InnerExceptions Console.WriteLine(e.Message & " " & item.Message) Next Finally tokenSource2.Dispose() End Try Console.ReadKey() End Sub End Module 

Когда экземпляр задачи наблюдает OperationCanceledException исключение, созданное пользовательским кодом, он сравнивает маркер исключения со связанным с ним маркером (который был передан в API, создавший задачу). Если маркеры одинаковы и свойство маркера IsCancellationRequested возвращает true , задача интерпретирует это как подтверждение отмены и переходит в состояние Отменено. Если вы не используете Wait метод или WaitAll для ожидания задачи, то задача просто устанавливает для нее Canceledсостояние .

Если вы ожидаете задачи, которая переходит в состояние Отменено, System.Threading.Tasks.TaskCanceledException создается исключение (заключенное в AggregateException исключение). Это исключение указывает на успешную отмену, а не на неисправную ситуацию. Следовательно, свойство Exception задачи возвращает значение null .

Если свойство маркера IsCancellationRequested возвращает false значение или маркер исключения не соответствует маркеру OperationCanceledException задачи, объект обрабатывается как обычное исключение, что приводит к переходу задачи в состояние Сбоя. Наличие других исключений также приведет к переходу задачи в состояние Сбоя. Состояние завершения задачи можно получить в свойстве Status .

Возможно, задача может продолжать обрабатывать некоторые элементы после запроса отмены.

См. также

  • Отмена в управляемых потоках
  • Практическое руководство. Отмена задачи и ее дочерних элементов

Совместная работа с нами на GitHub

Источник этого содержимого можно найти на GitHub, где также можно создавать и просматривать проблемы и запросы на вытягивание. Дополнительные сведения см. в нашем руководстве для участников.

Реализация программы с помощью System.Task

Пока реализовываю задачу с помощью System.Thread ,нужно сделать эту же задачу с помощью System.Task Предполагая, что в некотором каталоге на диске сохранено большое количество файлов с логами (журналами работы) прокси-сервера, написать программу вычисляющую статистику потребления трафика сети Интернет. На выходе программа должна создавать три текстовых документа: статистика по пользователям, статистика по доменам, статистика по датам. В качестве статистики использовать общий объем потребленного трафика, соответственно пользователем за все дни, при обращении к домену, в указанный день. При разработке программы считать, что каждый файл должен обрабатываться отдельно параллельно выполняющимся участком кода. После обработки всех файлов, полученные результаты для каждого из них должны суммироваться в общую сводку. Нужна помощь в составлении алгоритма,код я не прошу. Просто словесное описание как можно это сделать с помощью System.Task А код я потом напишу и если будут вопросы то скину сюда.

Отслеживать
25.1k 4 4 золотых знака 46 46 серебряных знаков 81 81 бронзовый знак
задан 9 янв 2016 в 13:16
380 5 5 серебряных знаков 22 22 бронзовых знака
пример работы с Task — тут после update.
9 янв 2016 в 13:27

Опишите, что вы уже знаете про Task и async / await . Рассказать вам про то, что это такое и как с ним работать с нуля — это тянет на хорошую, длинную статью, двумя словами тут не обойтись.

9 янв 2016 в 14:36

содержимое текстовых файлов такое же как тут? сколько таких файлов примерно. и сколько строк бывает в файле? если объемы небольшие. то решение — одно, а если логи гигабайтные и user’ов миллионы, то решение должно быть другое.

9 янв 2016 в 16:16

Да да такое же. у меня 10 текстовых в каждом максимум 10 строк. Мне тоже их надо парсить как с потоками или нет?

Перевод «system task» на русский

With the abundance of all sorts of offers and limited financial resources arises complicated system task of selecting priority areas of support.

В условиях обилия всевозможных предложений и ограниченных финансовых возможностей возникает сложная системная задача выбора приоритетных направлений поддержки.

The system task is to identify the strengths of many traders and build an optimal trading strategy on their basis.

Системная задача — выявить сильные стороны многих трейдеров и построить на их основе оптимальную торговую стратегию.

Let’s start with the most basic operating system task: installing and running applications.
Возьмем, к примеру, самое базовое задание для операционной системы — установку и запуск приложений.

Management of marketing business processes is a complex system task, which requires the availability of resources.

Управление маркетинговыми бизнес-процессами является сложной системной задачей, для реализации которой необходимо наличие ресурсов.

The task component, referred to as a system task, is responsible for operating on the scene.
Компонент «задача», именуемый также «системной задачей», отвечает за действия в сцене.

A lot of people that are trying to acquire a computer system task at home job are first-timers so you are not the only one.

Немало людей, которые пытаются получить работу на компьютере из дома работают как новички, так что Вы не одиноки.

Power Users can perform any operating system task except tasks reserved for the Administrators group.

Опытные пользователи могут выполнять любые задачи с операционной системой, кроме задач, зарезервированных для группы «Администраторы».

For instance, we find merit in the proposal to establish a common data system task force aimed at developing better statistics and indicators in response to requests by different conferences, including the World Summit for Social Development.

Например, мы считаем полезным предложение учредить целевую группу по общей системе данных, призванную подготовить более совершенные статистические данные и показатели в ответ на просьбы различных конференций, включая Всемирную встречу на высшем уровне в интересах социального развития.

The United Nations system task force on transnational organized crime and drug trafficking was established in March 2011, inter alia, to develop a coherent and multilateral approach to mitigating the impact of transnational threats on national dynamics.

В марте 2011 года была учреждена Целевая группа системы Организации Объединенных Наций по борьбе с транснациональной преступностью и незаконным оборотом наркотиков, в частности для выработки согласованного и многостороннего подхода к смягчению последствий транснациональных угроз для ситуации в странах.

Computer system task at home jobs requires extremely skilled individuals in standard considered that companies seldom need to shed their time in utilizing individuals that are unqualified the very same degree.

Труд на компьютере из дома требует высококвалифицированных специалистов в целом, так как компании редко хотят расходовать своё время при приёме на работу лиц, которые не находятся на должном уровне.

At the meeting held on 2 September, the secretariat made a presentation on the United Nations system task force on transnational organized crime and drug trafficking as threats to security and stability.

На совещании, состоявшемся 2 сентября, секретариат представил доклад о целевой группе системы Организации Объединенных Наций по проблемам транснациональной организованной преступности и оборота наркотиков как угрозам безопасности и стабильности.

Comment by the Administration. UNU has set up an information system task force to evaluate the Financial, Budgetary and Personnel Management System for enhancement and improvement, while keeping in mind the budgetary constraints in the biennium 2004-2005 as regards major improvements that require additional expenditure.

УООН создал целевую группу по информационным системам для оценки Системы управления финансами, бюджетом и персоналом на предмет ее усовершенствования и модернизации, принимая во внимание бюджетные ограничения в двухгодичном периоде 2004-2005 годов в отношении крупных усовершенствований, требующих дополнительных расходов.

Be open to new pointers, particularly on the subject that you are most mosting likely to be managing in your computer system task at house job.

Будьте открыты для новых идей, особенно в теме, которая вам наиболее интересна и Вы будете владеть своим делом с компьютером работая из дома.

In the Latvian pension system task of the Commission is to monitor the fund managers of the 2nd pension pillar and custodian banks subject to the law and other legislative requirements, i.e. that the funds are invested in accordance with the investment rules.

Задачей комиссии в рамках Латвийской пенсионной системы является надзор за тем, чтобы управляющие и банки-держатели средств 2-го пенсионного уровня соблюдали требования законов и других нормативных актов, т.е., чтобы вложение средств осуществлялось в соответствии с условиями вложений.

In the meantime each regional commission is continuing its on-going programme in close consultations with the UN system task forces established for the follow-up of IPCD.

В то же время каждая региональная комиссия продолжает реализовывать свою текущую программу в тесном взаимодействии с целевыми группами системы ООН, созданными для проведения мероприятий во исполнение решений МКНР.

Work is under way in the United Nations system task force on international public sector accounting standards on how to capture such income within international public sector accounting standards.

В настоящее время целевая группа системы Организации Объединенных Наций по международным стандартам учета в государственном секторе осуществляет работу по вопросу о том, каким образом учитывать такие поступления в рамках международных стандартов учета в государственном секторе.

The technical support team works under the umbrella of the United Nations system task team established by the Secretary-General to advance thinking on the global development agenda beyond 2015.

Группа технической поддержки работает под эгидой целевой группы системы Организации Объединенных Наций, учрежденной Генеральным секретарем с целью продумывания глобальной повестки дня развития на период после 2015 года.

This message may also appear if you terminated a «frozen» process using the browser’s task manager, the system task manager, or the command line interface.

Также сообщение может появляться, если вы завершили «зависший» процесс с помощью диспетчера задач «Амиго», системного диспетчера задач или через интерфейс командной строки.Попробуйте обновить страницу.

UN system task team on the post-2015 UN development agenda: disaster risk resilience

Системы ООН, Целевой группы по разработке повестки дня пост-2015 ООН: укрепление потенциала противодействия бедствиям на основе партнерства (МССБ ООН)

The United Nations system task force on transnational organized crime and drug trafficking continued to develop a system-wide response to transnational organized crime and drug trafficking, as well as a road map of key activities.

Целевая группа Организации Объединенных Наций по борьбе с транснациональной организованной преступностью и незаконным оборотом наркотиков продолжала заниматься разработкой общесистемных мер реагирования на проблемы транснациональной организованной преступности и незаконного оборота наркотиков, а также разработкой плана действий по основным направлениям деятельности.

Возможно неприемлемое содержание

Примеры предназначены только для помощи в переводе искомых слов и выражений в различных контекстах. Мы не выбираем и не утверждаем примеры, и они могут содержать неприемлемые слова или идеи. Пожалуйста, сообщайте нам о примерах, которые, на Ваш взгляд, необходимо исправить или удалить. Грубые или разговорные переводы обычно отмечены красным или оранжевым цветом.

Зарегистрируйтесь, чтобы увидеть больше примеров. Это просто и бесплатно
Ничего не найдено для этого значения.
Предложить пример
Больше примеров Предложить пример

Предложения, которые содержат system task

Новое: Reverso для Windows

Переводите текст из любого приложения одним щелчком мыши .

Скачать бесплатно
Перевод голосом, функции оффлайн, синонимы, спряжение, обучающие игры

Результатов: 78 . Точных совпадений: 78 . Затраченное время: 101 мс

Помогаем миллионам людей и компаний общаться более эффективно на всех языках.

Task Класс

Некоторые сведения относятся к предварительной версии продукта, в которую до выпуска могут быть внесены существенные изменения. Майкрософт не предоставляет никаких гарантий, явных или подразумеваемых, относительно приведенных здесь сведений.

Представляет асинхронную операцию.

public ref class Task : IAsyncResult
public ref class Task : IAsyncResult, IDisposable
public class Task : IAsyncResult
public class Task : IAsyncResult, IDisposable
type Task = class interface IAsyncResult
type Task = class interface IAsyncResult interface IDisposable
Public Class Task Implements IAsyncResult
Public Class Task Implements IAsyncResult, IDisposable

Наследование
Производный
Реализации

Комментарии

Дополнительные сведения об этом API см. в разделе Дополнительные примечания API для задачи.

Конструкторы

Инициализирует новую задачу Task с заданным действием.

Инициализирует новую задачу Task с заданным действием и токеном CancellationToken.

Инициализирует новую задачу Task с заданными действием и параметрами создания.

Инициализирует новую задачу Task с заданными действием и параметрами создания.

Инициализирует новую задачу Task с заданным действием и состоянием.

Инициализирует новую задачу Task с заданными действием, состоянием и параметрами.

Инициализирует новую задачу Task с заданными действием, состоянием и параметрами.

Инициализирует новую задачу Task с заданными действием, состоянием и параметрами.

Свойства

Получает объект состояния, предоставленный при создании задачи Task, или значение null, если объект не предоставлен.

Возвращает задачу, которая уже завершилась успешно.

Возвращает объект TaskCreationOptions, используемый для создания данной задачи.

Возвращает идентификатор выполняющейся в настоящее время задачи Task.

Возвращает объект AggregateException, который привел к преждевременному завершению задачи Task. Если задача Task завершилась успешно или еще не создала ни одного исключения, возвращает значение null .

Предоставляет доступ к фабричным методам для создания и настройки экземпляров Task и Task .

Возвращает идентификатор указанного экземпляра Task.

Возвращает значение, указывающее, завершилось ли выполнение данного экземпляра Task из-за отмены.

Получает значение, указывающее, завершена ли задача.

Возвращает значение, указывающее, выполнена ли задача.

Возвращает значение, указывающее, завершилась ли задача Task из-за необработанного исключения.

Получает состояние TaskStatus данной задачи.

Методы

Настраивает объект типа awaiter, используемый для данного объекта Task.

Настраивает объект типа awaiter, используемый для данного объекта Task.

Создает продолжение, которое получает предоставленные вызывающей стороной сведения о состоянии и которое выполняется после завершения целевой задачи Task.

Создает продолжение, которое получает предоставленные вызывающей стороной сведения о состоянии и маркер отмены и которое выполняется асинхронно после завершения целевой задачи Task.

Создает продолжение, которое получает предоставленные вызывающей стороной сведения о состоянии и маркер отмены и которое выполняется после завершения целевой задачи Task. Продолжение выполняется на основе набора указанных условий и использует указанный планировщик.

Создает продолжение, которое получает предоставленные вызывающей стороной сведения о состоянии и которое выполняется после завершения целевой задачи Task. Продолжение выполняется на основе набора указанных условий.

Создает продолжение, которое получает предоставленные вызывающей стороной сведения о состоянии и выполняется асинхронно после завершения целевой задачи Task. Продолжение использует указанный планировщик.

Создает продолжение, которое выполняется асинхронно после завершения выполнения целевой задачи Task.

Создает продолжение, которое получает маркер отмены и которое выполняется асинхронно после завершения целевой задачи Task.

Создает продолжение, которое выполняется после завершения целевой задачи в соответствии с заданными параметрами TaskContinuationOptions. Продолжение получает маркер отмены и использует указанный планировщик.

Создает продолжение, которое выполняется после завершения целевой задачи в соответствии с заданными параметрами TaskContinuationOptions.

Создает продолжение, которое выполняется асинхронно после завершения выполнения целевой задачи Task. Продолжение использует указанный планировщик.

Создает продолжение, которое получает предоставленные вызывающей стороной сведения о состоянии, выполняется асинхронно после завершения целевой задачи Task и возвращает значение.

Создает продолжение, которое выполняется асинхронно после завершения целевой задачи Task и возвращает значение. Продолжение получает предоставленные вызывающей стороной сведения и маркер отмены.

Создает продолжение, которое выполняется на основе указанных параметров продолжения задачи после завершения целевой задачи Task и которое возвращает значение. Продолжение получает предоставленные вызывающей стороной сведения и маркер отмены, а также использует указанный планировщик.

Создает продолжение, которое выполняется на основе указанных параметров продолжения задачи после завершения целевой задачи Task. Продолжение получает предоставленные вызывающей стороной сведения.

Создает продолжение, которое выполняется асинхронно после завершения выполнения целевой задачи Task. Продолжение получает предоставленные вызывающей стороной сведения и использует указанный планировщик.

Создает продолжение, которое выполняется асинхронно после завершения целевой задачи Task и возвращает значение.

Создает продолжение, которое выполняется асинхронно после завершения целевой задачи Task и возвращает значение. Продолжение получает маркер отмены.

Создает продолжение, которое выполняется в соответствии с заданными параметрами и которое возвращает значение. Продолжение получает маркер отмены и использует указанный планировщик.

Создает продолжение, которое выполняется в соответствии с заданными параметрами и которое возвращает значение.

Создает продолжение, которое выполняется асинхронно после завершения целевой задачи Task и возвращает значение. Продолжение использует указанный планировщик.

Создает задачу, которая завершается через заданное количество миллисекунд.

Создает отменяемую задачу, которая завершается через заданное количество миллисекунд.

Создает задачу, которая завершается через заданное время.

Создает отменяемую задачу, которая завершается через заданное время.

Создает задачу, которая завершается через заданное время.

Создает отменяемую задачу, которая завершается через заданное время.

Освобождает все ресурсы, используемые текущим экземпляром класса Task.

Удаляет задачуTask, освобождая все используемые ею неуправляемые ресурсы.

Определяет, равен ли указанный объект текущему объекту.

Создает задачу Task, которая завершилась из-за отмены с помощью указанного маркера отмены.

Создает задачу Task, которая завершилась с указанным исключением.

Получает объект типа awaiter, используемый для данного объекта Task.

Служит хэш-функцией по умолчанию.

Возвращает объект Type для текущего экземпляра.

Создает неполную копию текущего объекта Object.

Ставит в очередь заданную работу для запуска в пуле потоков и возвращает объект Task, представляющий эту работу.

Ставит в очередь заданную работу для запуска в пуле потоков и возвращает объект Task, представляющий эту работу. Токен отмены позволяет отменить задачу, если она не была начата.

Ставит в очередь указанную работу для запуска в пуле потоков и возвращает прокси для задачи, возвращаемой функцией function .

Ставит в очередь указанную работу для запуска в пуле потоков и возвращает прокси для задачи, возвращаемой функцией function . Токен отмены позволяет отменить задачу, если она не была начата.

Ставит в очередь заданную работу для запуска в пуле потоков и возвращает прокси для задачи Task(TResult) , возвращаемой function . Токен отмены позволяет отменить задачу, если она не была начата.

Ставит в очередь заданную работу для запуска в пуле потоков и возвращает прокси для задачи Task(TResult) , возвращаемой function .

Ставит в очередь заданную работу для запуска в пуле потоков и возвращает объект Task , представляющий эту работу. Токен отмены позволяет отменить задачу, если она не была начата.

Ставит в очередь заданную работу для запуска в пуле потоков и возвращает объект Task(TResult) , представляющий эту работу.

Синхронно выполняет задачу Task в текущем планировщике TaskScheduler.

Синхронно выполняет задачу Task в предоставленном планировщике TaskScheduler.

Запускает задачу Task, планируя ее выполнение в текущем планировщике TaskScheduler.

Запускает задачу Task, планируя ее выполнение в заданном планировщике TaskScheduler.

Возвращает строку, представляющую текущий объект.

Ожидает завершения выполнения задачи Task.

Ожидает завершения выполнения задачи Task. Ожидание завершается, если токен отмены отменяется до завершения задачи.

Ожидает завершения задачи Task в течение указанного числа миллисекунд.

Ожидает завершения выполнения задачи Task. Ожидание завершается, если время ожидания истекает или токен отмены отменяется до завершения задачи.

Ожидает завершения выполнения задач Task в течение указанного временного периода.

Ожидает завершения выполнения задачи Task.

Ожидает завершения выполнения всех указанных объектов Task.

Ожидает завершения выполнения всех указанных объектов Task, пока ожидание не будет отменено.

Ожидает завершения выполнения всех указанных объектов Task в течение указанного числа миллисекунд.

Ожидает завершения выполнения всех указанных объектов Task в течение указанного числа миллисекунд или до отмены ожидания.

Ожидает завершения выполнения всех указанных отменяемых объектов Task в течение указанного временного интервала.

Ожидает завершения выполнения любого из указанных объектов Task.

Ожидает завершения выполнения всех указанных объектов Task, пока ожидание не будет отменено.

Ожидает завершения выполнения любого из указанных объектов Task в течение указанного числа миллисекунд.

Ожидает завершения выполнения всех указанных объектов Task в течение указанного числа миллисекунд или до отмены токена отмены.

Ожидает завершения выполнения любого из указанных отменяемых объектов Task в течение указанного временного интервала.

Возвращает объект , Task который завершится после завершения или Task при запросе отмены указанного CancellationToken объекта.

Возвращает объект , Task который будет завершен по завершении или Task по истечении указанного времени ожидания.

Возвращает объект , Task который будет завершен после завершения, Task по истечении указанного времени ожидания или при запросе отмены указанного CancellationToken объекта.

Возвращает объект , Task который будет завершен по завершении или Task по истечении указанного времени ожидания.

Возвращает объект , Task который будет завершен после завершения, Task по истечении указанного времени ожидания или при запросе отмены указанного CancellationToken объекта.

Создает задачу, которая будет выполнена, когда все объекты Task в перечисляемой коллекции будут завершены.

Создает задачу, которая будет выполнена, когда все Task объекты в массиве будут завершены.

Создает задачу, которая будет выполнена, когда все объекты Task в перечисляемой коллекции будут завершены.

Создает задачу, которая будет выполнена, когда все Task объекты в массиве будут завершены.

Создает задачу, которая будет выполнена после выполнения любой из предоставленных задач.

Создает задачу, которая будет завершена после завершения любой из предоставленных задач.

Создает задачу, которая будет выполнена после выполнения любой из предоставленных задач.

Создает задачу, которая будет выполнена после выполнения любой из предоставленных задач.

Создает задачу, которая будет завершена после завершения любой из предоставленных задач.

Создает задачу, которая будет выполнена после выполнения любой из предоставленных задач.

Создает поддерживающий ожидание объект задачи, который асинхронным образом выдает возврат текущему контексту, когда его ожидают.

Явные реализации интерфейса

Возвращает дескриптор WaitHandle, который можно использовать для ожидания завершения задачи.

Получает значение, указывающее, синхронно ли выполнена операция.

Методы расширения

Ожидает завершения базовой операции DispatcherOperation в течение неограниченного времени.

Ожидает истечения заданного количества времени для базового DispatcherOperation.

Возвращает значение, указывающее, связан ли данный Task с DispatcherOperation.

Возвращает асинхронное действие среды выполнения Windows, представляющее запущенную задачу.

Применяется к

Потокобезопасность

Все члены Task, за исключением Dispose(), являются потокобезопасными и могут использоваться из нескольких потоков одновременно.

См. также раздел

  • Task
  • Библиотека параллельных задач (TPL)
  • Асинхронный шаблон на основе задач (TAP) в .NET: введение и обзор
  • Асинхронное программирование на основе задач
  • Примеры параллельного программирования с помощью .NET Core и .NET Standard

Обратная связь

Были ли сведения на этой странице полезными?

Обратная связь

Отправить и просмотреть отзыв по

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *

https://czena.narkolog-na-dom-voronezh-11.ru/