F # Асинхронная проблема - PullRequest
2 голосов
/ 13 июня 2010

Я написал фиктивный http-сервер в качестве упражнения на F #.

Я использую Mono 2.4.4 в Ubuntu 10.04 x86_64 с MonoDevelop.

Следующий код не компилируется с ошибкой:

Error FS0039: The field, constructor or member 'Spawn' is not defined (FS0039)

Может кто-нибудь попробовать это в VisualStudio, пожалуйста, я не знаю, это проблема Моно или моя проблема.

Я попробовал несколько примеров Async из книги F #, и они также выдают похожие сообщения о методах Async. *.

Спасибо

Крис.

#light

open System
open System.IO
open System.Threading
open System.Net
open System.Net.Sockets
open Microsoft.FSharp.Control.CommonExtensions

printfn "%s" "Hello World!"

let headers = System.Text.Encoding.ASCII.GetBytes("HTTP/1.0 200 OK\r\nContent-Type: text/html; charset=UTF-8\r\nContent-Length: 37\r\nDate: Sun, 13 Jun 2010 05:30:00 GMT\r\nServer: FSC/0.0.1\r\n\r\n")
let content = System.Text.Encoding.ASCII.GetBytes("<html><body>Hello World</body></html>")

let serveAsync (client : TcpClient) =
    async { let out = client.GetStream()
            do! out.AsyncWrite(headers)
            do! Async.Sleep 3000
            do! out.AsyncWrite(content)
            do out.Close()
            }

let http_server (ip, port) = 
    let server = new TcpListener(IPAddress.Parse(ip),port)
    server.Start()
    while true do 
        let client = server.AcceptTcpClient()
        printfn "new client"
        Async.Spawn (serveAsync client)

http_server ("0.0.0.0", 1234)

1 Ответ

5 голосов
/ 13 июня 2010

Spawn теперь называется Start (API библиотеки немного изменились с тех пор, как несколько книг были опубликованы несколько лет назад).

Проверьте документы на

http://msdn.microsoft.com/en-us/library/ee370232.aspx

...