У меня есть класс, который периодически запускает задачу, назовем его Task1.В другом классе у меня есть задача Task2 (которая выполняется постоянно), в которой я хочу дождаться, пока Задача1 завершит использование await
, и только затем продолжить выполнение кода в Задаче 2.
Экземпляр класса Задачи1является свойством класса 2. Я использую этот экземпляр в своем Task2
Моя проблема заключается в том, что в настоящее время я не могу заставить Task2 реагировать только тогда, когда Task1 завершено, код ожидания вызывается каждый разу меня запускается Task2.
Класс с Task1:
public Task<string> Task1()
{
TaskCompletionSource<string> tcs = new TaskCompletionSource<string>();
try
{
//Do something and get string result
if (result!= null)
{
tcs.TrySetResult(result);
}
else
{
//...
}
}
catch (Exception ex)
{
//...
}
return tcs.Task;
}
Класс с Task2:
Task2 = Task.Run(async () =>
{
try
{
while (terminateTask2 == false)
{
string result = await Class1.Task1();
//continue doing stuff with result
}
}
}
В данный момент всегда вызывается строка string result = await Class1.Task1();
, мойцель состоит в том, чтобы это происходило только в том случае, если произошла Задача 1.
Я хочу, чтобы Задача 1 уведомила Задачу2, что она успешно выполнена, и только тогда Я бы хотела, чтобы Задача2 продолжала выполнять оставшуюся часть кода..
Как я могу сделать эту работу?