如何将带有回调参数的方法包装到Task中
本文关键字:包装 方法 Task 参数 回调 | 更新日期: 2023-09-27 18:21:58
我有一个Silverlight 5应用程序,它有一组签名类似于以下的方法:
public void AskConfirmation(Action<bool> callback);
通常,这些方法会引发一个InteractionRequest来与用户交互,等待输入。
我想利用任务并行库和async/await关键字,因此我想定义具有以下签名的第二个方法:
public Task<bool> AskConfirmation();
第二种方法将依赖于第一种方法。不幸的是,我只是不知道如何实现它
当异步操作遵循基于事件的异步模式或Begin/End模式时,将它们封装到Tasks中很容易,但在我的情况下,这些操作显然是过度的,所以我不想实现它们。但现在我被卡住了。有人遇到过同样的问题并找到了解决方案吗?
public Task<bool> AskConfirmation()
{
var tcs = new TaskCompletionSource<bool>();
AskConfirmation(b => tcs.TrySetResult(b));
return tcs.Task;
}