Я хотел бы иметь один конкретный поток, очередь для задач и задач процесса в этом отдельном потоке. Приложение будет выполнять задачи, основанные на использовании пользователей, и помещать их в очередь задач. Затем отдельный поток обрабатывает задачи. Жизненно важно сохранить поток в сети и использовать его для обработки поставленных задач, даже если очередь пуста.Запуск работы по определенной теме
Я попытался выполнить несколько реализаций TaskScheduler
с BlockingCollection
и ограничить параллелизм только одним потоком, но кажется, что поток становится удаленным, когда очередь становится пустой, а задача обрабатывается другим потоком.
Не могли бы вы хотя бы направить меня к некоторым источникам, как достичь этой цели?
tl; dr Пытается ограничить один конкретный поток для обработки задач, которые динамически добавляются в очередь.
Edit1:
Это экспериментальный веб-приложение, которое использует WCF и .NET Framework 4.6. В библиотеке WCF я пытаюсь реализовать это поведение с одной задачей обработки потоков. Этот один поток должен инициализировать пролог, используя внешнюю библиотеку dll, а затем работать с прологом. Если другой поток используется в процессе, библиотека выбрасывает AccessViolationException
. Я провел некоторое исследование, и это, скорее всего, из-за плохо управляемых потоков в этой библиотеке. У меня была реализация, где у меня были блокировки повсюду, и это сработало. Теперь я пытаюсь переопределить и сделать его асинхронным, поэтому я не блокирую основной поток с помощью блокировки.
Я не на своем компьютере, но я предоставляю код, когда вернусь домой сегодня.
Просьба указать образец кода, чтобы выделить проблему. С уважением, –
В чем причина этих требований? –
Я отредактировал мой вопрос, я предоставлю код, когда вернусь домой примерно через 10 часов. –