http://fssnip.net/3Kのコードを使用してコンソールプログラムを作成しました。スレッドの終了を待つ終わり|そして私はF#MailboxProcessorの質問
私は「>を無視()System.Console.ReadLine」を追加するだろうと分かりました。すべてのMailBoxProcessorsが完了したことを伝えることは可能ですか?プログラムは終了しますか?
テストURL「www.google.com」を無効なURLに変更しようとしましたが、次のような結果が得られました。 「アウトプットレース」を避けることは可能ですか?
http://www.google.co1m crawled by agent 1. AgAAAent gent 3 is done. gent 2 is done. 5 is done. gent 4 is done. Agent USupervisor RL collector is done. is done. 1 is done.
[編集]
最後の出力/クロールがまだトーマスの更新http://fssnip.net/65を使用した後に終了されます。以下は、 "limit"を5に変更してデバッグメッセージを追加した後のプログラムの出力です。最後の行に切り詰められたURLが表示されます。すべてのクローラが実行を終了したかどうかを検出する方法ですか?
[Main] before crawl
[Crawl] before return result
http://news.google.com crawled by agent 1.
[supervisor] reached limit
http://www.gstatic.com/news/img/favicon.ico crawled by agent 5.
Agent 2 is done.
[supervisor] reached limit
Agent 5 is done.
http://www.google.com/imghp?hl=en&tab=ni crawled by agent 3.
[supervisor] reached limit
Agent 3 is done.
http://www.google.com/webhp?hl=en&tab=nw crawled by agent 4.
[supervisor] reached limit
Agent 4 is done.
http://news.google.com/n
私は最後に)私はConsole.Readlineを(追加しない限りしかし、 "クロール後に[メイン]" 最後printfnは、実行されることはありません
printfn "[Main] before crawl"
crawl "http://news.google.com" 5
|> Async.RunSynchronously
printfn "[Main] after crawl"
にメインコードを変更。
[編集2]
コードはfsiで正常に動作します。しかし、それが同じ問題を抱えているのは、 fsiです。--use:Program.fs --exec --quiet
、URLのクロールを解決するためのメールボックスプロセッサのこの使用法はまた、URLのコンテンツのフェッチが非同期呼び出しではない、あまりにも複雑です。問題は簡単な非同期計算を使用して簡単に解決できます。 – Ankur