C# 多个异步调用是否需要唯一的用户状态?

C# 多个异步调用是否需要唯一的用户状态?,c#,asynchronous,delegates,callback,state,C#,Asynchronous,Delegates,Callback,State,我正在开发一个C#应用程序,其中我使用委托设置了一些异步函数调用。这些调用将受到多个调用的影响,因此我必须使用委托的BeginInvoke方法的重载,该方法采用userState参数;e、 g: callerDelegate.BeginInvoke([fn_args...], callback, userState) 在上,它表示关于userState: 可能存在两种重载 对于异步操作: 单一调用和 多重调用。你可以 根据它们的区别来区分这两种形式 方法签名: 多重调用表单有一个额外的 名为u

我正在开发一个C#应用程序,其中我使用委托设置了一些异步函数调用。这些调用将受到多个调用的影响,因此我必须使用委托的
BeginInvoke
方法的重载,该方法采用
userState
参数;e、 g:

callerDelegate.BeginInvoke([fn_args...], callback, userState)
在上,它表示关于userState:

可能存在两种重载 对于异步操作: 单一调用和 多重调用。你可以 根据它们的区别来区分这两种形式 方法签名: 多重调用表单有一个额外的 名为userState的参数。这张表 使您的代码能够 调用Method1Async(字符串参数,对象 用户状态)多次,没有 等待任何挂起的异步 要完成的操作。如果,另一方面 手,你试着打电话 Method1Async(字符串参数)在 上一次调用已完成 方法引发了一个 无效操作例外

的userState参数 多调用重载允许 您需要区分异步 操作。你提供了一个独特的价值 (例如,GUID或哈希代码)用于 对Method1Async(字符串)的每次调用 参数、对象用户状态),以及 每次操作完成后,您的 事件处理程序可以确定 该操作的实例引发了 完成事件

我的问题是:用户状态是否必须是唯一的?措辞可以被理解为仅仅是一个建议,或者仅仅与他们的例子相关。我确实需要将状态传递给回调,我只是不需要它是唯一的。(我的应用程序不需要跟踪调用的每个实例。)那么,唯一性是一个要求吗?(也许.NET的异步框架需要它?)

此外,引用的页面用于基于事件的异步操作;这是否也适用于我的情况(使用委托的异步调用)

我在谷歌等搜索了几天,还没有找到答案


提前感谢

这不适用于您的情况
Begin
/
End
IAsyncResult
异步模式,而不是基于事件的异步模式(EAP)


它影响EAP,因为实现通常使用,这需要唯一的用户状态。即使在这种情况下,最终用户代码通过
null
用户状态(通常)也是有效的;EAP组件在调用
CreateOperation

时,会将其替换为
新对象,但它不适用于您的案例
Begin
/
End
IAsyncResult
异步模式,而不是基于事件的异步模式(EAP)

它影响EAP,因为实现通常使用,这需要唯一的用户状态。即使在这种情况下,最终用户代码通过
null
用户状态(通常)也是有效的;EAP组件在调用
CreateOperation

时,将用
新对象替换该对象,非常感谢!(对如此冗长的问题做出如此简洁的回答!)非常感谢!(对如此冗长的问题做出如此简洁的回答!)