这与所谓的“所谓” 价值限制 ”。
因为你给了 mb1 一个显式的泛型参数,它被编译为一个函数,而不是一个值。在不进行太多细节的情况下,编译器必须这样做以便利用不同的泛型参数访问值。
mb1
结果,每次你“参考” mb1 实际发生的是一个函数调用,它创建了一个全新的代理,所以这两个 .Post 调用发生在不同的对象上。
.Post
要纠正这种情况,请从值中删除泛型参数,从而使其成为真正的计算一次值:
let mb1 = MailboxProcessor<string>( ...
或者确保您只调用一次:
let mb = mb1 mb.Post("data message 1") mb.Post("data message 2")