Проблема с задачей C# с Powershell и TaskSchedulerC#

Место общения программистов C#
Ответить
Anonymous
 Проблема с задачей C# с Powershell и TaskScheduler

Сообщение Anonymous »

Я пишу библиотеку C# (.NET 4.6.1), которая будет использовать Tasks для запуска нескольких фрагментов кода в фоновом режиме. Эта библиотека будет вызываться сценарием Powershell, который запускается из элемента TaskScheduler.
Когда я провожу тестирование, запуская Powershell, а затем вызывая библиотеку, все работает правильно. Однако через TaskScheduler это не работает, и я могу воспроизвести эту проблему с поведением с помощью консольного приложения.
Основной поток библиотеки:

Код: Выделить всё

public class MainLibrary {
private static HttpClient g_httpclient_Main = new HttpClient();
private static List g_list_Tasks = new List();

public void EntryPoint() {
SetupTasks();

foreach (Task _t_List in g_list_Tasks)
{
_t_List.Start();
}
Task.WaitAll(g_list_Tasks.ToArray());
}
}
Каждая задача создавалась перед циклом foreach в отдельной функции/методе класса MainLibrary следующим образом:

Код: Выделить всё

private void SetupTasks() {
Task _task_TollGate = new Task(() =>
{
QueueEndpointCall();
});
g_list_Tasks.Add(_task_TollGate);
}

private async Task QueueEndpointCall()
{
try {
HttpResponseMessage _httprm = await g_httpclient_Main.GetAsync("http://www.google.com");
_string_HTTP = await _httprm.Content.ReadAsStringAsync();
....other code
}
catch (Exception e) {
File.WriteLine...
}
}
Когда я запускаю консольное приложение и ставлю точку останова, при нажатии и запуске GetAsync он возвращается к основному потоку, что, если я правильно понимаю, нормально/правильно. Затем, нажав строку Task.WaitAll, кажется, что фоновая задача завершилась, но заполнитель, который у меня есть во фрагменте «... другой код», не выполняется. Запуск Powershell вручную и вызов библиотеки работает нормально.
Есть какие-нибудь предложения? Я подумываю об обновлении до .NET v8.0, однако на данный момент у меня нет для этого ресурсов, и я хотел бы, чтобы это работало в .NET 4.6.1
Спасибо. .

Подробнее здесь: https://stackoverflow.com/questions/793 ... kscheduler
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «C#»