Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/fsharp/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
F#脚本到应用程序_F# - Fatal编程技术网

F#脚本到应用程序

F#脚本到应用程序,f#,F#,我写了两个小剧本 第一个维护一套证券的当前股票价格字典。我正在使用递归来侦听命名管道。只要名称管道上有可用的内容,它就会更新安全性价格,然后立即返回并开始侦听管道 第二个程序周期性地从第一个程序的价格缓存中读取某些证券的股票价格,并执行come计算 但我不知道如何让这两个程序相互沟通。我需要让我的第二个程序启动第一个程序,让它在后台运行,并在需要时获得价格 有人能给我指出正确的方向吗 谢谢,, -通常,它们必须是单独的程序/脚本吗 如果没有,我会将它们放在同一个程序中,并使用async/agen

我写了两个小剧本

第一个维护一套证券的当前股票价格字典。我正在使用递归来侦听命名管道。只要名称管道上有可用的内容,它就会更新安全性价格,然后立即返回并开始侦听管道

第二个程序周期性地从第一个程序的价格缓存中读取某些证券的股票价格,并执行come计算

但我不知道如何让这两个程序相互沟通。我需要让我的第二个程序启动第一个程序,让它在后台运行,并在需要时获得价格

有人能给我指出正确的方向吗

谢谢,,
-通常,它们必须是单独的程序/脚本吗

如果没有,我会将它们放在同一个程序中,并使用async/agents来运行这两个任务

以下是该战略的入门博客:

基本上只有一个代理处于循环中:从管道异步读取,更新价格

另一个代理处于循环中:睡眠一段时间,读取价格并进行计算。或者,这可能只是同步的“主程序”循环

(根据数据结构,您可能需要也可能不需要协调来处理一个代理读取而另一个代理正在更新。)

实际上,您甚至不需要代理,只需要在后台运行异步。差不多

// 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)
//第一个脚本
设可变lastPrice=0.0
异步的{
尽管如此
let!nextval=namedPipe.AsyncRead()
lastPrice异步启动
//第二稿
尽管如此
系统线程线程睡眠(1000)
打印Fn“%f”(计算最新价格)

如果有帮助的话。

它们必须是单独的程序/脚本吗

如果没有,我会将它们放在同一个程序中,并使用async/agents来运行这两个任务

以下是该战略的入门博客:

基本上只有一个代理处于循环中:从管道异步读取,更新价格

另一个代理处于一个循环中:睡眠一段时间,读取价格并进行计算。或者,这可能只是同步的“主程序”循环

(根据数据结构,您可能需要也可能不需要协调来处理一个代理读取而另一个代理正在更新。)

实际上,您甚至不需要代理,只需要在后台运行异步

// 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)
//第一个脚本
设可变lastPrice=0.0
异步的{
尽管如此
let!nextval=namedPipe.AsyncRead()
lastPrice异步启动
//第二稿
尽管如此
系统线程线程睡眠(1000)
打印Fn“%f”(计算最新价格)
如果有帮助的话。

有很多方法

  • .Net远程处理
  • 管道
  • 磁盘上的文本文件
  • 中介服务(网络或本地)
  • 周转基金
  • 有很多方法

  • .Net远程处理
  • 管道
  • 磁盘上的文本文件
  • 中介服务(网络或本地)
  • 周转基金

  • 嗯……它们目前不必是单独的程序。但将来我可能不得不编写一些其他应用程序来使用price cache。因此我只想保留price cache程序的一个实例,并且可以由多个程序引用。但是现在,您的解决方案已经足够了。谢谢您的回复。他们没有目前必须是单独的程序。但将来我可能不得不编写其他一些可以使用price cache的应用程序。因此,我只希望保留price cache程序的一个实例,并且可以由多个程序引用。但是现在,您的解决方案已经足够了。谢谢您的回复