C#中Using裏使用單例的問題
阿新 • • 發佈:2017-11-01
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裏使用單例的問題