c# - 如何退出 C# GraphQL 订阅?
问题描述
我正在使用以下代码订阅 GraphQL 源:
public override async Task RunAsync(RunMode mode, CancellationToken cancel)
{
var consumer = new XYZConsumer(new GraphQLHttpClient(_options.Url, new NewtonsoftJsonSerializer()));
var result = await consumer.GetAllXYZ();
result.Subscribe(t =>
{
****How_do_I_get_out_of_here?*****
...
public class XYZConsumer
{
private IObservable<GraphQL.GraphQLResponse<SubscriptionApi>> subscriptionStream;
private readonly IGraphQLClient _client;
public XYZConsumer(IGraphQLClient client)
{
_client = client;
}
public async Task<IObservable<GraphQL.GraphQLResponse<SubscriptionApi>>> GetAllXYZ()
{
var posSubscription = new GraphQL.GraphQLRequest
{
Query = @"subscription mquery..."
};
subscriptionStream = _client.CreateSubscriptionStream<SubscriptionApi>(posSubscription);
return subscriptionStream;
}
}
我有几个可能相关的问题:
GetAllXYZ
由编译器突出显示,消息This async method lacks 'await' operators and will run synchronously. Consider using the 'await' operator ...
解决方案我发现建议我应该重新执行任务而不是subscriptionStream
但我需要返回它,那么我该如何更改呢?- 我陷入了订阅循环。
How_do_I_get_out_of_here?
读取 100 条记录时如何退出?
解决方案
添加using System.Reactive.Linq;
并将Take
其限制为例如 20 条记录:
result
.Take(20)
.Subscribe(t =>
推荐阅读
- html - 为什么它不是以 div 为中心的?我无法理解
- java - 调整 JPanel 的大小 - 第二个面板不会调整大小以适合框架
- robotframework - 如何在测试用例中间重新启动 RobotFramework 中的变量值
- php - 致命错误无法在写入上下文中使用方法返回值
- angular - 打字稿错误 get 调用的预期类型参数为 0
- html5-canvas - rgba() 在 HTML5 Canvas Gradient 中产生黑色调
- reactjs - 使用来自 websocket 的数据初始化 Redux 状态
- android - 我在任何 Android 模板中都找不到 Main.axml,也无法打开其他 axml 文件
- node.js - 如何使 Node API 只能由 Web 应用访问?
- node.js - 用于存储实例数据的环境变量