我正在查看一些像这样的遗留 C# 代码:
await Task.Run(() =>
{
_logger.LogException(LogLevel.Error, message, exception);
Thread.Sleep(500);
});
Run Code Online (Sandbox Code Playgroud)
我创建了以下 F# 代码,但 Thread.Sleep 没有受到影响:
Tasks.Task.Run(fun _ -> logger.Log(LogLevel.Warn, message)
Thread.Sleep(500))
Run Code Online (Sandbox Code Playgroud)
有人可以告诉我我做错了什么吗?我需要维护方法的签名。
提前致谢。
这通常是您使用异步工作流的地方。如果你需要让函数返回一个任务,你可以这样做:
let someFunc (message : string) : Task =
async {
logger.Log(LogLevel.Warn, message)
Thread.Sleep(500)
} |> Async.StartAsTask :> Task
Run Code Online (Sandbox Code Playgroud)