コード例 #1
0
 ITopicClient GetTopicClient(string topic)
 {
     return(_topicClients.GetOrAdd(topic, _ =>
     {
         var topicClient = new TopicClient(
             _connectionString,
             topic,
             retryPolicy: DefaultRetryStrategy
             );
         _disposables.Push(topicClient.AsDisposable(t => AsyncHelpers.RunSync(async() => await t.CloseAsync().ConfigureAwait(false))));
         return topicClient;
     }));
 }
コード例 #2
0
        async Task <ITopicClient> GetTopicClient(string topic)
        {
            async Task <TopicClient> InitializeTopicClient()
            {
                await EnsureTopicExists(topic);

                var topicClient = new TopicClient(_connectionString, topic, retryPolicy: DefaultRetryStrategy);

                _disposables.Push(topicClient.AsDisposable(t => AsyncHelpers.RunSync(async() => await t.CloseAsync().ConfigureAwait(false))));
                return(topicClient);
            }

            var lazy = _topicClients.GetOrAdd(topic, _ => new Lazy <Task <TopicClient> >(InitializeTopicClient));
            var task = lazy.Value;

            return(await task);
        }