C#中Using里使用单例的问题

又给自己挖了一个坑跳进去。

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

原文地址:https://www.cnblogs.com/sylvialucy/p/7765895.html