2010-06-11 32 views
1

我寫了兩個小腳本,F#腳本到應用程序

第一個維護一組證券的當前股票價格字典。我正在使用遞歸來偵聽命名管道。每當名稱管道上有可用的東西時,它就會更新安全價格並立即返回並開始監聽管道。

第二個定期讀取股價從第一個節目的價格緩存一些安全的,並執行來計算。

但我不知道如何讓這兩個程序進行通信。我不知何故需要讓我的第二個程序啓動第一個程序,讓它在後臺運行並在需要時獲得價格。

有人能指出我正確的方向嗎?

謝謝 -Sudaly

回答

3

他們是否是獨立的程序/腳本?

如果不是這樣,我會把它們放在同一個程序,並使用異步/代理運行兩個任務。

下面是該戰略的啓動,博客:

http://blogs.msdn.com/b/dsyme/archive/2010/02/15/async-and-parallel-design-patterns-in-f-part-3-agents.aspx

基本上一個代理只是位於一個循環:從管道異步讀取,更新價格

其它藥劑位於一個循環:睡一段時間,閱讀價格並做計算。或者,這可能只是同步的「主程序」循環。

(根據數據結構,你可能會或可能不會需要協調處理,而其他正在更新一個代理讀取。)

事實上,你甚至不需要代理,可以只運行異步在背景中。類似於

// first script 
let mutable lastPrice = 0.0 
async { 
    while true do 
     let! nextval = namedPipe.AsyncRead() 
     lastPrice <- nextVal 
} |> Async.Start 
// second script 
while true do 
    System.Threading.Thread.Sleep(1000) 
    printfn "%f" (calc lastPrice) 

如果有幫助。

+0

嗯......他們沒有要目前單獨的計劃。但在將來,我可能不得不編寫一些其他可以使用價格緩存的應用程序。所以我想只保留價格緩存程序的一個實例,並能夠通過多個程序進行引用。 但現在,您的解決方案已足夠。謝謝回覆 – sudaly 2010-06-11 21:51:47

2

方法有很多種。

  1. .NET遠程
  2. 管道上盤
  3. 文本文件
  4. 中介服務(Web或本地)
  5. WCF