I need to use in my asp.net project a stack collection created inside a class
public class ExpressionsEvaluator
{
public Stack<ExpressionParameter> expressionParameters = new Stack<ExpressionParameter>();
public object EvaluateExpression()
{
// calculate expression patamers
expressionParameters.Push(parameter);
// Do some functions
// remove the last parameters
expressionParameters.Pop();
}
}
Is this approach thread safe?
Will the expressionParameters object be different for each user accessing the website?
Use case:
public ActionResult EvaluateExpression(string expression)
{
try
{
ExpressionsEvaluator expressionEvaluator = new ExpressionsEvaluator();
object result = expressionEvaluator.EvaluateExpression(expression);
return Json(result, JsonRequestBehavior.AllowGet);
}
catch (Exception ex)
{
return Json(new { hasError = true }, JsonRequestBehavior.AllowGet);
}
}
Yes, the class in itself is thread-safe. It’s how you use it.
That depends how you use it, and where you store it. If you create an instance of it in a web-page, than it will be a total new instance for each page-request. If you create an instance but store it somewhere, than it depends how that storage works. If you use a session, than yes, each user has its own instance.