AsyncEnumerable 随笔

AsyncEnumerable 主要是伴随着对异步迭代器的需求而产生的。之前在编写WikiClientLibrary的时候,遇到了一个和分页相关的问题。比如我们要从维基服务器获取所有页面的列表。一个最简单、使用异步的想法如下所示

public async Task<IEnumerable<Page>> FetchAllPagesAsync(Site site)
{
    JToken json = await site.SendReuestAsync(/* ... */);    // 向服务器请求所有页面
    IList<Page> result = PagesFromJson();                   // 将获取到的JSON转换为页面列表
    return result;
}

这样,客户程序可以使用循环或者LINQ来使用这些条目序列。

但情况没有这么简单。服务器在一次请求中最多只能返回500条结果,那么对于大部分的维基而言,我们可能需要多次请求才能获取到所有的结果。那么,我们要怎么处理这种情况呢?

Continue reading “AsyncEnumerable 随笔”

如何在PowerPoint中取消选择选区中的文本框

Sub UnselectTextBoxes()
Dim c As New Collection
For Each s In ActiveWindow.Selection.ShapeRange
    If s.TextFrame.HasText <> msoTrue Then
        c.Add s
    End If
Next
ActiveWindow.Selection.Unselect
For Each s In c
    s.Select MsoTriState.msoFalse
Next
End Sub

 

Content is available under CC BY-SA 3.0 unless otherwise noted.