Bit*_*777 5 c# rest wcf multithreading asynchronous
我正在使用202方法创建异步REST API .我必须在WCF(而不是Web API)中实现它,我的计划是生成一个新线程来执行异步工作,同时让WCF操作线程返回202.我遇到的问题是我的一些遗留代码需要在新线程中使用期望OperationContext和HttpContext来存储和检索上下文信息.我知道这两个都是特定于线程的,因此在生成的线程中为null.
我有两个问题:
您将负责确保您生成的任何线程都收到必要的上下文。WCF 仅负责确保 OperationContext 与其启动的任何线程切换一起流动,这就是为什么 anIExtension<OperationContext>
是存储上下文数据的推荐方法。一旦你离开大楼,你就只能靠自己了……
对于在线程池上生成任务,典型的方法是准备任何必要的上下文信息,然后将其传递给委托,例如Task.Run(() => doLongRunningTask(contextCopiedFromOperationContext))
。然后,委托将负责ThreadLocal<T>
在调用实际的长时间运行的实现之前填充对象(或您希望使用的任何机制)。
归档时间: |
|
查看次数: |
759 次 |
最近记录: |