Вы можете создать свой API для класса Задача (Библиотека параллельных задач):
class DistributedHashTable
{
public Task SetAsync(string key, string value);
public Task<string> GetAsync(string key);
}
Оба метода используют асинхронный ввод-вывод для выполнения соответствующей операции и устанавливают возвращенную задачу на завершение после завершения операции.
Тогда вы можете использовать свой класс синхронно, как это:
var dht = new DistributedHashTable(...);
dht.SetAsync("FOO", "bar").Wait();
Console.WriteLine(dht.GetAsync("FOO").Result);
или асинхронно, как это:
var dht = new DistributedHashTable(...);
dht.SetAsync("FOO", "bar")
.ContinueWith(t => dht.GetAsync("FOO"))
.Unwrap()
.ContinueWith(t => {
Console.WriteLine(t.Result);
});
или асинхронно с использованием Async CTP , например:
var dht = new DistributedHashTable(...);
await dht.SetAsync("FOO", "bar");
Console.WriteLine(await dht.GetAsync("FOO"));