1. 程式人生 > >C#中Using裏使用單例的問題

C#中Using裏使用單例的問題

kafka produce Language pro man 消息 con 釋放 fig

又給自己挖了一個坑跳進去。

KafkaManager使用單例模型獲取到一個producer,然而自己代碼裏用的時候加了一個using

1 using (var producer = KafkaManager.Instance.GetProducer(Configs.Kafka_ScanResend))
2 {
3 //code goes here
4 }

然後自己在做測試的時候,for循環加10條數據發送到kafka,結果發現每次都只有第一條可以發送成功,之後都失敗了。

debug之後發現 xxx.cs:4 處報錯,錯誤消息是:object reference not set to an instance of object.細查可發現調用了dispose方法,將這個producer釋放了。

然後就能知道是這個using裏使用單例的方式,會導致這樣的問題。

using使用方式可查看官方文檔

https://docs.microsoft.com/zh-cn/dotnet/csharp/language-reference/keywords/using-statement

C#中Using裏使用單例的問題