我有一个定期运行任务的类,我们称它为Task1。在另一堂课中,我有一个任务Task2(不断运行),在这里我要等待Task1使用await
完成,然后才继续在Task2中执行代码。
Task1类的实例是类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();
,我的目标是仅在Task1发生时才发生。
我希望Task1通知Task2成功完成,并且只有这样,我希望Task2继续执行其其余代码。
我该如何做?