cost 189 ms
暂停和恢复 F# 异步工作流 (Async<'T>) - Suspend and resume F# asynchronous workflows (Async<'T>)

有没有一种通用的方法来获得对任意异步工作流执行的外部控制,用于暂停和恢复? 类似于 CancellationToken,但更像是 SuspendResumeToken,其中可以简单地执行以下操作: 我可以通过在每次迭代或递归步骤检查这样的标记来模拟递归或迭代函数的行为,但由于异步工作流具有自然的屈 ...

Task.ContinueWith 的 F# 异步等效项 - F# Async Equivalent of Task.ContinueWith

我一直在为我们的一些较大的 .NET 解决方案实施[&lt;Trace&gt;]属性,这将允许将可配置分析轻松添加到任何被认为重要的函数/方法。 我正在使用Fody和MethodBoundaryAspect来拦截每个函数的进入和退出并记录指标。 这适用于同步函数,对于返回Task方法,有一个可行的解 ...

为什么我必须包装 Async<T> 进入另一个异步工作流程,让! 它? - Why do I have to wrap an Async<T> into another async workflow and let! it?

我试图理解 F# 中的异步工作流,但我发现了一个我真的不理解的部分。 以下代码工作正常: 我定义了一个异步工作流,其中 TryOpenAsync 返回Task&lt;StreamOpenResult&gt;类型。 我使用 Async.AwaitTask 将其转换为Async&lt;Stream ...

异步计算不会捕获OperationCancelledException - async computation doesn't catch OperationCancelledException

我正在尝试向URL发出异步Web请求,如果请求耗时太长,将返回该URL。 我正在使用F#异步工作流和System.Net.Http库来执行此操作。 但是,我无法捕获async工作流中的System.Net.Http库引发的Task / OperationCancelledExceptio ...

结合异步和期权单子 - Combine Async and Option monads

最近,在编写一些可用于许多嵌套异步工作流的代码时,我发现了一种新兴的模式,这种模式对我来说很香。 一个简单的例子: 对我来说,“ verboseFun”似乎很冗长,但我想不出一种将Option和Async monad结合起来的方法,因此可以在不进行模式匹配的情况下将其重写。 我在想类 ...

在测试F#异步工作流时如何获得有用的堆栈跟踪 - How to get a useful stacktrace when testing F# async workflows

我想测试以下异步工作流程(使用NUnit + FsUnit): 我为它编写了以下测试: 自从foo抛出后,我在单元测试运行器中得到以下stacktrace: 不幸的是,堆栈跟踪并没有告诉我异常的位置。 它在RunSynchronously处停止。 某处我听说Asy ...

在异步中异常处理的意外行为,可能的错误? - Unexpected behavior with exception handling in async, possible bug?

我在调用嵌套的异步时偶然发现了一个问题。 引发了异常,但无法使用异步工作流提供的任何常规异常处理方法。 以下是一个简单的测试,它可以重现这个问题: 这导致了以下异常: 我真的认为应该在这种情况下捕获异常,或者这是否真的是预期的行为? (我正在使用Visual Studi ...

让! 按顺序执行? - Let! executing in sequence?

我的印象就是让! 在f#中,智能足以在并行中执行赋值序列。 但是,以下示例显示不同的行为,a,b,c的分配似乎同步执行。 那是怎么回事? 如果我想在并行执行a,b,c,我应该使用Async.Parallell ... |&gt; Async.RunSynchronously . ...

F#异步Web请求,处理异常 - F# async web request, handling exceptions

我正在尝试在F#中使用异步工作流来获取多个Web请求。 但是,我的一些请求偶尔会返回错误(例如http 500),我不知道如何处理这个问题。 看起来我的F#程序在调试器中运行时陷入无限循环。 我可能错过了一些东西,因为我看到的例子没有开箱即用。 我找到的第一件事就是帮助了这段代码 ...

如何保持异步并行程序代码的可管理性(例如在C ++中) - How to keep asynchronous parallel program code manageable (for example in C++)

我目前正在研究需要通过网络控制收集设备的服务器应用程序。 因此,我们需要做很多并行编程。 随着时间的推移,我了解到处理实体(线程/进程/应用程序)之间有三种通信方法。 遗憾的是, 这三种方法都有其缺点 。 A)您可以进行同步请求 (同步函数调用)。 在这种情况下,调用者将等待,直到 ...

dotNet中是否存在DirectoryInfo.GetFiles / Directory.GetDirectories的异步版本? - Is there an async version of DirectoryInfo.GetFiles / Directory.GetDirectories in dotNet?

dotNet中是否存在DirectoryInfo.GetFiles / Directory.GetDirectories的异步版本? 我想在F#异步块中使用它们,并且拥有一个可以使用AsyncCallbacks调用的版本会很好。 问题是我试图吮吸一堆目录,可能是在慢速网络连接上的SMB挂 ...

使用异步工作流并行化的最佳实践 - Best practices to parallelize using async workflow

让我们说我想刮一个网页,并提取一些数据。 我最有可能写这样的东西: let! 告诉F#在另一个线程中执行代码,然后将结果绑定到变量,并继续处理。 上面的示例使用两个let语句:一个用于获取响应,一个用于读取所有数据,因此它至少生成两个线程(如果我错了,请纠正我)。 虽然上面的 ...

F#中的异步工作流 - Async Workflows in F#

我是一名C#程序员,但我对F#中的异步工作流有疑问。 假设我在C#类库中有以下类: 我的理解是,我可以在F#中创建一个名为ReadAllAsync的函数,我可以这样调用: 并且它不会阻塞调用线程,而是将其释放到线程池,然后在操作完成时返回另一个线程。 我想我理解如何使用Asy ...


 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM