C# 在持久对象中修改集合(泛型)会导致异常或数据丢失
我有什么 保存在静态变量中并在需要时调用的对象 此对象与另一个应用程序接口 我在这个对象中有两个集合(通用列表) 日志 及 “预检测的数据”供以后使用 问题是当多人试图使用此对象(对象与另一个应用程序接口)时,修改集合会导致异常或数据丢失 循环或使用泛型列表的Find函数时出现异常 我要做的是不时删除预取的数据或日志。我最初可以在调用对象中的任何函数时执行此操作,但如果在两个人(或线程)试图同时调用同一函数时修改集合,则会导致异常或数据丢失 如果我去,数据丢失: List AlreadySavedData { get { //Rough Syntax maybe incorrect - but in actual application is correct _alreadySavedData= _alreadySavedData.Find(Delegate (Data d {return d.CreatedOn.Date == DateTime.Now.Data;})); return _alreadySavedData; } } 列出AlreadySavedData { 得到 { //粗略的语法可能不正确-但在实际应用中是正确的 _alreadySavedData=_alreadySavedData.Find(委托(数据d{return d.CreatedOn.Date==DateTime.Now.Data;})); 返回_alreadySavedData; } } 我认为,通过上述操作,我至少可以限制我每天收集的“预取数据”或日志。但是,当试图同时访问或修改集合时,有时对“AlreadySavedData”的一个调用可能会覆盖一个可能刚刚修改(添加)集合的并行调用,从而导致数据丢失C# 在持久对象中修改集合(泛型)会导致异常或数据丢失,c#,.net,generics,collections,C#,.net,Generics,Collections,我有什么 保存在静态变量中并在需要时调用的对象 此对象与另一个应用程序接口 我在这个对象中有两个集合(通用列表) 日志 及 “预检测的数据”供以后使用 问题是当多人试图使用此对象(对象与另一个应用程序接口)时,修改集合会导致异常或数据丢失 循环或使用泛型列表的Find函数时出现异常 我要做的是不时删除预取的数据或日志。我最初可以在调用对象中的任何函数时执行此操作,但如果在两个人(或线程)试图同时调用同一函数时修改集合,则会导致异常或数据丢失 如果我去,数据丢失: List AlreadySave
如果您必须有多个线程使用该集合以提供同步,我们将非常感谢您的帮助。最简单的方法是:
protected volatile _alreadySavedData;
List AlreadySavedData
{
get
{
lock(_alreadySavedData)
{
//Rough Syntax maybe incorrect - but in actual application is correct
_alreadySavedData= _alreadySavedData.Find(Delegate (Data d {return d.CreatedOn.Date == DateTime.Now.Data;}));
return _alreadySavedData;
}
}
}
您需要在修改或使用静态集合的任何位置执行此操作。在多线程应用程序中处理并发性充其量是有问题的
有关该主题的完整说明+指南+建议,请参阅本文:
protected volatile _alreadySavedData;
List AlreadySavedData
{
get
{
lock(_alreadySavedData)
{
//Rough Syntax maybe incorrect - but in actual application is correct
_alreadySavedData= _alreadySavedData.Find(Delegate (Data d {return d.CreatedOn.Date == DateTime.Now.Data;}));
return _alreadySavedData;
}
}
}
您需要在修改或使用静态集合的任何位置执行此操作。在多线程应用程序中处理并发性充其量是有问题的
有关该主题的完整说明+指南+建议,请参阅本文: