我创建了一个项目。很多人会一次使用我的项目。 如果任何人遇到错误,那么它将通过使用内存流创建对象来写入文件。 如果每个人都得到错误,那么将创建该数量的对象,并且所有对象一次将错误写入同一文件。 这有什么问题和性能问题吗?
答案 0 :(得分:6)
答案 1 :(得分:1)
内存流只是字节数组周围的Stream接口。
所以这实际上非常快。
但是整个字节数组都保存在内存中,因此您可能遇到的性能问题是由于内存分配太多。
如果你真的遇到问题取决于“很多人”有多大,以及内存流中的数据量。
如果您使用“很多人”写入同一文件,也要注意锁定问题。
答案 2 :(得分:1)
想到文件锁定/争用。你能不创建一个日志目录并让所有日志写入创建自己的文件?或者,使用.NET跟踪功能,或者像log4net,Common.Logging,dotTrace作为日志框架来为您删除这些问题。
答案 3 :(得分:0)
在访问日志文件时,使流共享并在其周围使用锁定。记得在退出时关闭流。
static Object _locker = new Object;
static FileStream fs = new FileStream(...);
// your code
lock(_locker)
{
fs.Write(...) // write to stream
}