別のスレッドで WCF ChannelFactory を作成する必要があります。私が今直面している問題は、変数svc
が常に値を返すとは限らないことです:
...
Dim svc As T = Nothing
Dim svcft As New DuplexChannelFactory(Of T)(caller, ep)
ThreadPool.QueueUserWorkItem(New WaitCallback(Sub(obj) svc = svcft.CreateChannel()))
...
ほとんどのsvc
場合、null 値が返されますが、適切な参照が返されることもあります。私は何を間違っていますか?
以下の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