我正在處理一段代碼,該代碼將一個API請求接收到WebAPI控制器,並通過該請求調用WCF Web服務。這會阻止,直到WCF服務響應並導致問題,如超時和性能問題。出於許多我無法控制的原因,我無法使用異步/等待處理此特定用例。從後臺線程調用WCF服務
我期待在一個單獨的線程踢這個WCF取消呼叫,所以在控制器的WebAPI我做這樣的事情:
New Thread(()=>{
//Call WCF service here
//Do something with the response
}).Start();
但是,代碼是吹起來。調用WCF服務的線路未被更改爲上述代碼塊,但現在我得到:
無法訪問處置的對象。對象名稱: 'System.ServiceModel.Channels.ServiceChannel'。
望着當拋出異常的堆棧跟蹤,我可以看到服務器堆棧跟蹤如下:
服務器堆棧跟蹤:在 System.ServiceModel.Channels.CommunicationObject.ThrowIfDisposedOrImmutable() 在System.ServiceModel.Channels.CommunicationObject.Open(時間跨度 超時)在 System.ServiceModel.Channels.ServiceChannel.CallOpenOnce.System.ServiceModel.Channels.ServiceChannel.ICallOnce.Call(ServiceChannel 信道,時間跨度超時)在 SYST em.ServiceModel.Channels.ServiceChannel.CallOnceManager.CallOnce(時間跨度 超時,CallOnceManager級聯)在 System.ServiceModel.Channels.ServiceChannel.Call(字符串動作, 布爾單向,ProxyOperationRuntime操作,對象[]插件, 對象[]奏,時間跨度超時)在 System.ServiceModel.Channels.ServiceChannelProxy.InvokeService(IMethodCallMessage 包括methodCall,ProxyOperationRuntime操作)在 System.ServiceModel.Channels.ServiceChannelProxy.Invoke(即時聊天 消息)
Im不經歷巨大與WCF如此想知道是否有關於卡爾的一些怪癖在後臺線程中使用該服務,或者如果還有其他事情需要我去做?
我試着用搜索引擎這一點,但所有的結果都屬於調用從後臺線程內 WCF服務,而不是從後臺調用WCF服務。
任何想法?