从FileStream读取两次
问题描述:
我有一个GetServiceMap()方法,它调用反序列化程序,然后打开该流并从中读取某些内容。从FileStream读取两次
问题是,我有一个GetAllGroups()方法也通过相同的流调用解串器。
我该如何syncronize它?用ManualResetEvent也许?
public ServiceMapModel GetServiceMap()
{
s._mre.WaitOne();
return s.Deserialize();
}
public List<Group> GetAllGroups()
{
s._mre.WaitOne();
return s.Deserialize().Groups;
}
Deserialize方法:
public ManualResetEvent _mre = new ManualResetEvent(true);
public ServiceMapModel Deserialize()
{
_serviceMap = new ServiceMapModel();
_mre.Reset();
try
{
using (var fileStream = new FileStream(Settings.Path, FileMode.Open))
{
XmlReaderSettings settings = new XmlReaderSettings();
settings.IgnoreComments = true;
using (XmlReader reader = XmlReader.Create(fileStream, settings))
{
_serviceMap = _serializer.Deserialize(reader) as ServiceMapModel;
}
fileStream.Close();
}
}
catch (IOException)
{
}
_mre.Set();
return _serviceMap;
}
请看我的编辑是否有意义 - 在你的问题中没有“异步读取文件”。 – 2012-03-15 00:08:07
是的,它使。 TNX。 – Bip 2012-03-15 00:11:07