Я не понимаю, что вы имеете в виду под "параллельным foreach". Синглтон реализован так:
public class MyClass
{
private static MyClass _instance;
private MyClass()
{
//Do Stuff
}
public static MyClass GetInstance()
{
if(_instance == null)
_instance = new MyClass();
return _instance;
}
}
Другим способом, вместо метода является свойство:
private static readonly object LockObject = new object();
private static MyClass _instance;
public static MyClass Instance
{
get
{
lock (LockObject)
{
return _instance ?? (_instance = new MyClass());
}
}
}
Хотя я предпочитаю первый метод, потому что его гораздо проще реализовать, даже для новичков собственность также является хорошим способом