相关疑难解决方法(0)

IAsyncEnumerable 或 IAsyncEnumerator 的工厂

我想知道是否有一种方法可以创建 Source对象IAsyncEnumerable<T>IAsyncEnumerator<T>通过 Source 对象创建,就像TaskCompletionSource允许人们执行任务一样。特别是,TaskCompletionSource可以像任何其他参数一样传递。

也许是这样的:

public class AsyncEnumerables {

    public Task HandlerTask { get; set; }

    public async Task<string> ParentMethod() {
        var source = new AsyncEnumerableSource<int>();
        IAsyncEnumerable asyncEnumerable = source.GetAsyncEnumerable();
        HandlerTask = Task.Run(() => handleAsyncResultsAsTheyHappen(asyncEnumerable));
        int n = await someOtherTask();
        source.YieldReturn(n);
        var r = await ChildMethod(source);
        source.Complete();  // this call would cause the HandlerTask to complete.
        return r;
    }

    private async Task<string> ChildMethod(AsyncEnumerableSource<int> source) {
        source.YieldReturn(5);
        await SomeOtherCall();
        source.YieldReturn(10);
        return "hello";
    } …
Run Code Online (Sandbox Code Playgroud)

c# asynchronous c#-8.0 iasyncenumerable

7
推荐指数
2
解决办法
3732
查看次数

标签 统计

asynchronous ×1

c# ×1

c#-8.0 ×1

iasyncenumerable ×1