C# 多个异步调用是否需要唯一的用户状态?
我正在开发一个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
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
时,将用新对象替换该对象,非常感谢!(对如此冗长的问题做出如此简洁的回答!)非常感谢!(对如此冗长的问题做出如此简洁的回答!)