我发现自己想要实现一个 IAwaitable 类(实现异步调用而不阻塞线程的东西)。
我已经安装了最新版本的 AsyncCTP,编译器说我需要一个 IsCompleted() 成员。好的,所以 CTP 预览已经移动了一点(我明白了,就像它是预览一样)
问题:AsyncCTP 语言扩展现在期望什么接口?
问题:在这一切中,我假设我可以通过 lamda/delegate 向“IAwaitable”发出信号?这可能吗?我们调用 EndAwait 吗?智能感知建议您调用 EndAwait 来检索结果……所以这听起来不对。有任何想法吗?
到目前为止,我发现的所有示例都是针对 AsyncCTP 库已经实现的功能,例如:
await new WebClient().DownloadStringTaskAsync(uri).ConfigureAwait(false);
背景:
我发现自己在 Jon Skeets 页面上(再次)查看这个示例
using System;
class Test
{
static async void Main()
{
await new Awaitable();
}
}
class Awaitable
{
public Awaiter GetAwaiter()
{
return new Awaiter();
}
}
class Awaiter
{
public bool BeginAwait(Action continuation)
{
return false;
}
public int EndAwait()
{
return 1;
}
}