你可以設計圍繞Task<T> class(任務並行庫)的API:
class DistributedHashTable
{
public Task SetAsync(string key, string value);
public Task<string> GetAsync(string key);
}
這兩種方法都將使用異步IO來執行相應的操作,並返回任務<牛逼>設置操作完成時已完成。
然後你可以同步使用你的類是這樣的:
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"));
來源
2010-12-06 00:53:42
dtb
使用同步IO ? – ChaosPandion 2010-12-06 00:12:48
@ChaosPandion:我喜歡,但它是真的。 – 2010-12-06 00:13:55