小编fig*_*ats的帖子

从定期异步请求创建可观察对象

我想要一种将异步方法转换为 observable 的通用方法。就我而言,我正在处理用于HttpClient从 API 获取数据的方法。

假设我们有一个方法Task<string> GetSomeData()需要成为一个单一的方法,Observable<string>其中的值是作为以下组合生成的:

  • 重复定期调用GetSomeData()(例如每 x 秒)
  • GetSomeData()在任何给定时间手动触发调用(例如当用户点击刷新时)。

由于有两种方法可以触发GetSomeData()并发执行可能是一个问题。为了避免要求GetSomeData()线程安全,我想限制并发性,以便只有一个线程同时执行该方法。因此,我需要使用某种策略来处理重叠的请求。我做了一个(某种)大理石图来描述问题和想要的结果

大理石图

我的直觉告诉我有一个简单的方法可以实现这一点,所以请给我一些见解:)

这是我到目前为止的解决方案。不幸的是,它并没有解决并发问题。

    public class ObservableCreationWrapper<T>
    {
        private Subject<Unit> _manualCallsSubject = new Subject<Unit>();
        private Func<Task<T>> _methodToCall;
        private IObservable<T> _manualCalls;

        public IObservable<T> Stream { get; private set; }

        public ObservableCreationWrapper(Func<Task<T>> methodToCall, TimeSpan period)
        {
            _methodToCall = methodToCall;
            _manualCalls = _manualCallsSubject.AsObservable()
                .Select(x => Observable.FromAsync(x => methodToCall()))
                .Merge(1);

            Stream = Observable.FromAsync(() => _methodToCall())
                .DelayRepeat(period)
                .Merge(_manualCalls);
        }

        public void TriggerAdditionalCall() …
Run Code Online (Sandbox Code Playgroud)

c# asynchronous system.reactive rx.net

6
推荐指数
1
解决办法
407
查看次数

将任意 2D 多边形投影到 3D 三角形网格上的最佳方法?

将任意 2D 多边形投影到 3D 三角形网格上的最佳方法是什么?

为了让事情更清楚,这是问题的可视化:

图像

三角形网格代表地形,因此可以被视为 2.5D。我希望能够将投影的多边形视为一个单独的对象。这个特定的实现是在 WebGL 和 Three.js 中完成的,但任何适合交互式 3D 应用程序的解决方案都是令人感兴趣的。

3d graphics webgl computational-geometry three.js

5
推荐指数
1
解决办法
2276
查看次数

在哪里可以找到Azure函数的代码?

我是Azure Functions的新手,没有适当的介绍就被投入到项目中,我可以问的任何人都不在办公室。我最简单的最愚蠢的问题是:在哪里可以找到实际的代码?

在azure门户中,这些功能被列为“只读”,并且仅包含function.json。该资源是一个应用程序服务,它具有几个功能。在属性中没有任何git仓库的链接。

azure azure-app-service-envrmnt azure-functions

1
推荐指数
1
解决办法
1006
查看次数