F# 类型推断和 System.Object

发布于 2024-08-16 03:32:22 字数 494 浏览 1 评论 0原文

我在使用以下代码时遇到问题。

open System
open System.ComponentModel
open System.Threading

let triggerEvent (state : Object) = Console.Write("Do Something.")

let asyncContext = AsyncOperationManager.CreateOperation(null)
asyncContext.PostOperationCompleted(triggerEvent, null)

我收到一个错误,triggerEvent 的类型为 'a ->单元而不是 SendOrPostCallback。 SendOrPostCallback 的类型为 Object ->单元。我想知道为什么triggerEvent 的类型是 'a ->单位而不是对象 ->单元。我明确地将状态声明为对象,但它仍然是“a”。

有什么建议吗?谢谢。

I have a problem getting the following code to work.

open System
open System.ComponentModel
open System.Threading

let triggerEvent (state : Object) = Console.Write("Do Something.")

let asyncContext = AsyncOperationManager.CreateOperation(null)
asyncContext.PostOperationCompleted(triggerEvent, null)

I get an error, that triggerEvent is of type 'a -> unit instead of SendOrPostCallback.
SendOrPostCallback is of type Object -> unit. I am wondering why triggerEvent is of type 'a -> unit instead of Object -> unit. I explicitly declared state as Object and still it is 'a.

Any suggestions? Thank you.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

早茶月光 2024-08-23 03:32:22

我不是线程方面的专家,但如果 PostOperationCompleted 需要 SendOrPostCallback,请尝试像这样包装您的 triggerEvent:
替换

asyncContext.PostOperationCompleted(triggerEvent, null)

asyncContext.PostOperationCompleted(new SendOrPostCallback(triggerEvent), null)

I'm not an expert on threading, but if PostOperationCompleted expects a SendOrPostCallback, try wrapping your triggerEvent like this:
replace

asyncContext.PostOperationCompleted(triggerEvent, null)

by

asyncContext.PostOperationCompleted(new SendOrPostCallback(triggerEvent), null)
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文