我需要在單獨的線程上創建一個WCF ChannelFactory現在我面臨的問題是變量svc
並不總是返回一個值:如何使用ThreadPool.QueueUserWorkItem同步返回(新的WaitCallback創建通道?
...
Dim svc As T = Nothing
Dim svcft As New DuplexChannelFactory(Of T)(caller, ep)
ThreadPool.QueueUserWorkItem(New WaitCallback(Sub(obj) svc = svcft.CreateChannel()))
...
大部分時間svc
將返回一個空值,但有時它返回一個很好的借鑑。我在做什麼錯?
我根據爲波紋管YK1的評論修改我的代碼。它仍然沒有按沒有解決問題 - svc仍然並不總是如此:
Task.Factory.StartNew(
Sub()
svc = svcft.CreateChannel()
End Sub
).ContinueWith(
Sub()
svcft = Nothing
End Sub
)
If svc Is Nothing Then
Throw New Exception("Creating service reference failed.") '<== get the error here...
End If
非常感謝YK1的輸入。你說得對,我在.Net 4.所以我嘗試了你推薦的TPL解決方案。我認爲仍然有一些我做錯了 - 變量svc仍然沒有被設置。下面是我的代碼的簡化版本:Task.Factory.StartNew(Sub()svc = svcft.CreateChannel())。ContinueWith(Sub()svcft = Nothing) – user2434400
我已更新我的原始帖子以顯示我的最新代碼。它仍然不能解決問題。有什麼想法嗎? – user2434400
我想通了 - 因爲我需要在主線程中使用svc,所以.ContinueWith函數不會有幫助。不久,我改變它.Wait()它的工作。非常感謝YK1! – user2434400