C# 让一个事件等待另一个事件完成-旧学校

C# 让一个事件等待另一个事件完成-旧学校,c#,asynchronous,async-await,C#,Asynchronous,Async Await,我需要这样做,但没有异步/等待关键字(我的应用程序是用 .NET Framework 4.0) TaskCompletionSource tcs=null; 专用异步无效按钮\u单击(对象发送方,路由目标) { tcs=新任务完成源(); 等待tcs任务; WelcomeTitle.Text=“已完成的工作”; } 私有无效按钮\u单击2(对象发送者,路由目标) { tcs?.TrySetResult(真); } 有什么想法吗?您需要手动为任务附加一个延续。这就是async await旨在减轻

我需要这样做,但没有异步/等待关键字(我的应用程序是用
.NET Framework 4.0

TaskCompletionSource tcs=null;
专用异步无效按钮\u单击(对象发送方,路由目标)
{
tcs=新任务完成源();
等待tcs任务;
WelcomeTitle.Text=“已完成的工作”;
}
私有无效按钮\u单击2(对象发送者,路由目标)
{
tcs?.TrySetResult(真);
}

有什么想法吗?

您需要手动为任务附加一个延续。这就是async await旨在减轻的负担

TaskCompletionSource<bool> tcs = null;

private void Button_Click(object sender, RoutedEventArgs e)
{
    tcs = new TaskCompletionSource<bool>();
    tcs.Task.ContinueWith((_) =>
    {
        WelcomeTitle.Text = "Finished work";
    }, TaskContinuationOptions.ExecuteSynchronously);
}

private void Button_Click2(object sender, RoutedEventArgs e)
{
    tcs?.TrySetResult(true);
}
TaskCompletionSource tcs=null;
私有无效按钮\u单击(对象发送者,路由目标e)
{
tcs=新任务完成源();
tcs.Task.ContinueWith(()=>
{
WelcomeTitle.Text=“已完成的工作”;
},TaskContinuationOptions。同步执行);
}
私有无效按钮\u单击2(对象发送者,路由目标)
{
tcs?.TrySetResult(真);
}

您是否尝试过
tcs.Task.Wait()?为什么我们要在这里使用任务,只需使用手动重置事件或其他什么。当然,除非这是一个过于简化的例子
TaskCompletionSource<bool> tcs = null;

private void Button_Click(object sender, RoutedEventArgs e)
{
    tcs = new TaskCompletionSource<bool>();
    tcs.Task.ContinueWith((_) =>
    {
        WelcomeTitle.Text = "Finished work";
    }, TaskContinuationOptions.ExecuteSynchronously);
}

private void Button_Click2(object sender, RoutedEventArgs e)
{
    tcs?.TrySetResult(true);
}