小编Dev*_*nch的帖子

F# - 将任务<unit>转换为plain Task

我正在使用Giraffe使用Async工作流创建本机.NET任务,因为我需要与Discord.NET库的互操作性.我有一个事件需要一个Task,但我写的事件处理程序返回一个Task<unit>由于某种原因,类型检查器不够聪明,不能意识到它是相同的事情.有没有办法将其转换Task<unit>为直线Task

这是我的代码:

let messageReceived (msg : SocketMessage) =
    task {
        let author = msg.Author.Username
        let text = msg.Content
        match msg.Author.Username with
            | "Monika" -> ()
            | usr ->
                if text.ToLower().StartsWith "<@407367655830585344> say" then
                    text.Substring 26 |> msg.Channel.SendMessageAsync |> ignore
                else if text.ToLower().StartsWith "<@407367655830585344>" then
                    let response = (Lines.VoiceLines |> Extras.randomElement).Replace("[player]", author)
                    msg.Channel.SendMessageAsync response |> ignore
                else if text.ToLower().StartsWith "delete" then
                    text.Substring 7 + ".chr deleted" |> msg.Channel.SendMessageAsync |> ignore
                else if Extras.onein …
Run Code Online (Sandbox Code Playgroud)

.net f# task-parallel-library

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

标签 统计

.net ×1

f# ×1

task-parallel-library ×1