【发布时间】:2018-02-09 03:51:51
【问题描述】:
我有以下课程:
public class SesionPasoProxy
{
private static EntitySerializer _serializer = EntitySerializer.Create();
public static string Obtener(Guid idSesion, int orden)
{
SesionPaso item = new SesionPaso();
item.Orden = orden;
item.IdSesion = idSesion;
return _serializer.ToXml(item);
}
}
public class EntitySerializer
{
private EntitySerializer(){}
public static EntitySerializer Create()
{
return EntitySerializer.Create("Test");
}
public static EntitySerializer Create(string serializationContextName)
{
EntitySerializer instance = new EntitySerializer();
instance.Name = serializationContextName;
return instance;
}
public ToXml(SesionPaso x){ return x.toString();}
}
该代码是线程安全的吗? SessionPasoProxy 在 ASP.NET WebForms aspx 页面中使用。所以它可以被同时调用。 如您所见,EntitySerializer 是静态的,但会返回新实例(不是单例) 你怎么看? 我的单元测试显示是 thread.safe,但我完全不确定。
非常感谢
【问题讨论】:
-
" SessionPasoProxy 位于 ASP.NET WebForms aspx 页面内" 为什么要将此类添加到页面类中,两者并不相关。将
SessionPasoProxy类添加到它自己的文件中。除此之外,是的,它是线程安全的 -
嗨,我编辑了。我想说“在里面使用”。为什么是线程安全的?
-
该方法是线程安全的,每次调用 Obtener 方法时,都会创建一个新的 SesionPaso 对象,并且不会将信息存储在静态变量中。
标签: asp.net multithreading thread-safety threadpool application-pool