我正在使用RegisterWaitForSingleObject
调用它的基本用法表单,根据提供的超时值调用方法,并且一切正常。然而,有一个特殊的场景,我正在使用这个调用RegisterWaitForSingleObject
的代码发生在事件处理程序中,我需要传递回调方法一些额外的信息。目前,回调方法具有以下必需的签名:
public void MyCallBackMethod(object state, bool timedOut)
所以我可以在技术上做到这一点:
public void MyCallBackMethod(object state, bool timedOut, string SomeValue)
但是,现在我不知道在调用state
时尝试添加此值时,timeout
和RegisterWaitForSingleObject
会手动发送哪些值
ThreadPool.RegisterWaitForSingleObject(_stop, MyCallBackMethod(?,?, "ABC123"), null, 5000, true);
如何正确地将其他值传递给使用RegisterWaitForSingleObject
注册的回调方法?
答案 0 :(得分:3)
你可以利用lambda / closure来忽略其他参数,只需用你想要的值调用你想要的方法吗?
ThreadPool.RegisterWaitForSingleObject(
_stop,
(state, timeout) => MyCallBackMethod("ABC123"),
null,
5000,
true);
或者,如果您的MyCallBackMethod
确实接受了state
和timeout
个参数:
ThreadPool.RegisterWaitForSingleObject(
_stop,
(state, timeout) => MyCallBackMethod(state, timeout, "ABC123"),
null,
5000,
true);